Skip to content

Instantly share code, notes, and snippets.

@EvilFreelancer
Created May 13, 2023 12:29
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save EvilFreelancer/6fc0a7aa2c5b0a85ee59643917082c23 to your computer and use it in GitHub Desktop.
Save EvilFreelancer/6fc0a7aa2c5b0a85ee59643917082c23 to your computer and use it in GitHub Desktop.
Простейшее CRUD приложение PHP
<?php
$host = '127.0.0.1';
$db = 'database';
$user = 'username';
$pass = 'password';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
$pdo = new PDO($dsn, $user, $pass, $opt);
function getProducts($pdo) {
$stmt = $pdo->query('SELECT * FROM products');
return $stmt->fetchAll();
}
function getProduct($pdo, $id) {
$stmt = $pdo->prepare('SELECT * FROM products WHERE id = ?');
$stmt->execute([$id]);
return $stmt->fetch();
}
function createProduct($pdo, $name, $description, $price) {
$stmt = $pdo->prepare('INSERT INTO products (name, description, price) VALUES (?, ?, ?)');
$stmt->execute([$name, $description, $price]);
return $pdo->lastInsertId();
}
function updateProduct($pdo, $id, $name, $description, $price) {
$stmt = $pdo->prepare('UPDATE products SET name = ?, description = ?, price = ? WHERE id = ?');
$stmt->execute([$name, $description, $price, $id]);
}
function deleteProduct($pdo, $id) {
$stmt = $pdo->prepare('DELETE FROM products WHERE id = ?');
$stmt->execute([$id]);
}
// Роутинг и форматирование ответа в JSON
$request = $_SERVER['REQUEST_URI'];
$method = $_SERVER['REQUEST_METHOD'];
header('Content-Type: application/json');
switch ($request) {
case '/products' :
if($method == 'GET'){
echo json_encode(getProducts($pdo));
} elseif ($method == 'POST') {
$name = $_POST['name'];
$description = $_POST['description'];
$price = $_POST['price'];
echo json_encode(createProduct($pdo, $name, $description, $price));
}
break;
case strpos($request, '/product') !== false :
$id = explode('/',$request)[2];
if($method == 'GET'){
echo json_encode(getProduct($pdo, $id));
} elseif ($method == 'PUT') {
parse_str(file_get_contents('php://input'), $_PUT);
$name = $_PUT['name'];
$description = $_PUT['description'];
$price = $_PUT['price'];
updateProduct($pdo, $id, $name, $description, $price);
} elseif ($method == 'DELETE') {
deleteProduct($pdo, $id);
}
break;
default:
http_response_code(404);
break;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment