PHP Підключення до MySQL
PHP 5 та пізніші версії можуть працювати з базами даних MySQL, використовуючи:
- MySQLi розширення ("i" означає покращений)
- PDO (PHP Data Objects / Об’єкти даних PHP)
Попередні версії PHP використовували розширення MySQL. Однак у 2012 році це розширення було припинено.
Використовувати MySQLi чи PDO?
Якщо вам потрібна коротка відповідь, то вона буде "Як вам подобається".
І MySQLi, і PDO мають свої переваги:
PDO працюватиме з 12 різними системами баз даних, тоді як MySQLi працюватиме лише з базами даних MySQL.
Отже, якщо вам потрібно переключити свій проєкт на використання іншої бази даних, PDO спрощує процес. Вам потрібно лише змінити рядок підключення та кілька запитів. З MySQLi вам потрібно буде переписати весь код разом із запитами.
Обидва є об’єктно-орієнтованими, але MySQLi також пропонує процедурний API.
Обидва підтримують Prepared Statements. Підготовлені інструкції захищають від впровадження SQL і дуже важливі для безпеки вебдодатків.
Приклади MySQL у синтаксисі MySQLi та PDO
У цьому та наступних розділах ми демонструємо три способи роботи з PHP та MySQL:
- MySQLi (об’єктно-орієнтований)
- MySQLi (процедурний)
- PDO
MySQLi Інсталяція
Для Linux та Windows: Розширення MySQLi автоматично встановлюється в більшості випадків, коли встановлено пакет php5 mysql.
Щоб отримати відомості про встановлення, перейдіть на сторінку: https://php.net/manual/en/mysqli.installation.php
PDO Інсталяція
Щоб отримати відомості про встановлення, перейдіть на сторінку: https://php.net/manual/en/pdo.installation.php
Відкрити підключення до MySQL
Перш ніж ми зможемо отримати доступ до даних у базі даних MySQL, нам потрібно мати можливість підключитися до сервера:
Приклад (MySQLi Об’єктно-орієнтований)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Створити підключення
$conn = new mysqli($servername, $username, $password);
// Перевірити підключення
if ($conn->connect_error) {
die("Підключення не вдалося: " . $conn->connect_error);
}
echo "Підключено успішно";
?>
Примітка до об’єктно-орієнтованого прикладу вище:
Помилка $connect_error була порушена до PHP 5.2.9 і 5.3.0. Якщо вам потрібно забезпечити сумісність із версіями PHP до 5.2.9 і 5.3.0, замість цього використовуйте такий код:
// Перевірити підключення
if (mysqli_connect_error()) {
die("Помилка підключення до бази даних: " . mysqli_connect_error());
}
Приклад (MySQLi Процедурний)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Створити підключення
$conn = mysqli_connect($servername, $username, $password);
// Перевірити підключення
if (!$conn) {
die("Підключення не вдалося: " . mysqli_connect_error());
}
echo "Підключено успішно";
?>
Приклад (PDO)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
// встановити режим помилки PDO у виняток
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Підключено успішно";
} catch(PDOException $e) {
echo "Підключення не вдалося: " . $e->getMessage();
}
?>
Примітка: У наведеному вище прикладі PDO ми також визначили базу даних (myDB). Для підключення до PDO потрібна дійсна база даних. Якщо база даних не вказана, створюється виняток.
Порада: Великою перевагою PDO є те, що він має клас винятків для обробки будь-яких проблем, які можуть виникнути під час запитів до нашої бази даних. Якщо в блоці try{ } виникає виняток, скрипт припиняє виконання та переходить безпосередньо до першого блоку catch(){ }.
Закрити підключення
Підключення буде закрито автоматично, коли скрипт завершиться. Щоб закрити з’єднання раніше, скористайтеся наступним:
MySQLi Об’єктно-орієнтований:
$conn->close();
MySQLi Процедурний:
mysqli_close($conn);
PDO:
$conn = null;