Шаг 37: PDO и безопасные запросы

PDO — стандарт для MySQL. Подготовленные выражения (prepare/execute) защищают от SQL‑инъекций.

Код примера

try {
  $pdo = new PDO("mysql:host=localhost;dbname=school;charset=utf8mb4", "user", "password");
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $stmt = $pdo->prepare("SELECT name, email FROM users WHERE status = :status");
  $stmt->execute([":status" => "active"]);
  $users = $stmt->fetchAll(PDO::FETCH_ASSOC);
  foreach ($users as $u) {
    echo htmlspecialchars($u["name"]) . " (" . htmlspecialchars($u["email"]) . ")<br>";
  }
} catch (PDOException $e) {
  echo "Ошибка БД: " . htmlspecialchars($e->getMessage());
}
Результат: