Тема: Зв’язок скрипта з MySQL.
Написання файлу підключення db.php за допомогою абстракції PDO. Тестування з’єднання та обробка PDOException.
Мета: Зрозуміти принцип роботи PDO (PHP Data Objects), навчитись створювати безпечне підключення до реляційної бази даних та обробляти виняткові ситуації під час помилок з’єднання.
Технологічний стек: PHP (об’єкт PDO), MySQL / MariaDB, try...catch.
mysql_ та освоїти сучасне підключення через PDO.db.php.try { ... } catch (PDOException $e) { ... } для елегантного відловлювання помилок і уникнення технічних роздруківок секретів на екрані для користувачів.Створіть у корені вашого проєкту файл db.php. Для локального сервера (XAMPP) за замовчуванням пароль є порожнім рядком, а логін “root”.
<?php
$host = '127.0.0.1';
$db = 'task_manager';
$user = 'root';
$pass = ''; // В MAMP чи Laragon зазвичай пароль 'root'
$charset = 'utf8mb4';
З цих даних будується конфігураційний рядок DSN (Data Source Name):
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
Щоб з’єднання працювало безпечно та коректно, визначемо масив налаштувань ($options):
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
Це гарантує, що при серйозних помилках генеруватимуться змістовні Exceptions, а результати запитів приходитимуть нам у вигляді звичних асоціативних масивів.
Ініціалізація підключення (new PDO) — це операція, яка залежить від зовнішнього ресурсу. Сервер може бути вимкнений, і скрипт впаде з помилкою. Використовуємо try...catch:
try {
$pdo = new PDO($dsn, $user, $pass, $options);
// Якщо все добре: echo "Підключення успішне!";
} catch (PDOException $e) {
die("Помилка підключення до бази даних: " . $e->getMessage());
}
?>
Підключіть свій db.php до головного скрипта index.php за допомогою require_once 'db.php';. Запустіть сторінку index.php. Якщо ви не бачите помилок “Помилка підключення до бази даних” — це означає, що зв’язок успішно встановлено і об’єкт $pdo лежить в оперативній пам’яті готовий до виконання запитів на вставку і видачу документів.
Щоб точно перевірити catch, штучно змініть логін $user у db.php на хибний (наприклад root555), збережіть файл і оновіть сторінку в браузері.
mysqli розширенням і PDO (PHP Data Objects)? Основні аргументи використання PDO?try...catch? Чи є PDOException єдиним можливим виключенням у PHP?PDO::FETCH_ASSOC за замовчуванням? Що він робить?db.php), а не пишуть напряму зверху в файлі index.php? Який принцип тут застосовано?lab11.md винести фрагмент коду вашого файлу db.php (особливо логічні блоки DSN і try...catch).index.php (або просто текст “Підключення успішне”), коли логін і пароль збігаються.die(), який був спровокований навмисно введеною помилкою пароля у файлі db.php.lab11.md.