Подключение PHP к MySQL
PHP поддерживает два основных расширения для работы с базами данных MySQL:
- MySQLi (MySQL Improved)
- PDO (PHP Data Objects)
Что мне следует использовать: MySQLi или PDO?
Если нужен короткий ответ, то "Что вам больше нравится".
И MySQLi, и PDO имеют свои преимущества:
PDO будет работать с 12 различными системами баз данных, тогда как MySQLi будет работать только с базами данных MySQL.
Таким образом, если вам придется переключить ваш проект на использование другой базы данных, PDO упрощает этот процесс. Вам нужно будет изменить только строку подключения и несколько запросов. С MySQLi вам потребуется переписать весь код — включая запросы.
Оба подхода являются объектно-ориентированными, но MySQLi также предлагает процедурный API.
Оба поддерживают подготовленные выражения. Подготовленные выражения защищают от SQL-инъекций и важны для безопасности веб-приложений.
Примеры MySQL в синтаксисе MySQLi и PDO
В этой и следующих главах мы демонстрируем три способа работы с PHP и MySQL:
- MySQLi (объектно-ориентированный)
- MySQLi (процедурный)
- PDO
Установка MySQLi
Для Linux и Windows: Расширение MySQLi автоматически устанавливается в большинстве случаев, когда установлен пакет php mysql.
Подробности установки: http://php.net/manual/en/mysqli.installation.php
Установка PDO
Подробности установки: http://php.net/manual/en/pdo.installation.php
Открыть подключение к MySQL
Прежде чем мы сможем получить доступ к данным в базе данных MySQL, нам нужно иметь возможность подключиться к серверу.
Для подключения обычно требуется четыре части информации: имя сервера, имя пользователя, пароль и имя базы данных:
Пример - MySQLi объектно-ориентированный
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "mydb";
// Создаем подключение
$conn = new mysqli($servername, $username, $password,
$dbname);
// Проверяем подключение
if ($conn->connect_error) {
die("Подключение не удалось: " . $conn->connect_error);
}
echo "Подключено успешно";
?>
Пример - MySQLi процедурный
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "mydb";
// Создаем подключение
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Проверяем подключение
if (!$conn) {
die("Подключение не удалось: " . mysqli_connect_error());
}
echo "Подключено успешно";
?>
Пример - PDO
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "mydb";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// устанавливаем режим ошибок PDO в исключение
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Подключено успешно";
} catch(PDOException $e) {
echo "Подключение не удалось: " . $e->getMessage();
}
?>
Совет: Большим преимуществом PDO является наличие класса исключений для обработки любых проблем, которые могут возникнуть в наших запросах к базе данных. Если исключение выбрасывается в блоке try{ }, выполнение скрипта останавливается и переходит непосредственно к первому блоку catch(){ }.
Закрыть подключение к MySQL
Подключение будет закрыто автоматически, когда скрипт завершится. Чтобы закрыть подключение раньше, используйте следующий код:
Пример - MySQLi объектно-ориентированный:
$conn->close();
Пример - MySQLi процедурный:
mysqli_close($conn);
Пример - PDO:
$conn = null;