Подключение к MySQL
PHP 5 и более поздние версии могут работать с базой данных MySQL, используя:
- Расширение MySQLi ("i" означает улучшенный)
- PDO (объекты данных PHP)
Разница между MySQLi и PDO
- PDO работает с 12 различными системами баз данных, тогда как MySQLi работает только с базами данных MySQL.
- И PDO, и MySQLi объектно-ориентированы, но MySQLi также предлагает процедурный API.
- Если в какой-то момент разработки вы захотите изменить базу данных, тогда это будет проще сделать в PDO, чем в MySQLi, поскольку PDO поддерживает 12 различных систем баз данных. Вам нужно будет только изменить строку подключения и несколько запросов. С MySQLi вам нужно будет переписать весь код, включая запросы.
- Оба поддерживают подготовленные заявления. Подготовленные операторы защищают от внедрения SQL и очень важны для безопасности веб-приложений.
В этом и следующих уроках мы продемонстрируем три способа работы с PHP и MySQL:
- MySQLi (объектно-ориентированный)
- MySQLi (процедурный)
- PDO
Установка MySQLi
Для Linux и Windows: расширение MySQLi автоматически устанавливается в большинстве случаев, когда установлен пакет php5 mysql.
Для получения информации об установке перейдите по адресу.
Установка PDO
Для получения информации об установке перейдите по адресу.
Подключение к базе данных MySQL в PHP
Перед тем как мы начнём выполнять какие-либо операции с записями с базой данных MySQL, необходимо к ней подключиться. Сделать это можно несколькими способами:
Использование объектно-ориентированной процедуры MySQLi: мы можем использовать объектно-ориентированный метод MySQLi для установления соединения с базой данных MySQL из сценария PHP.
Пример (объектно-ориентированный MySQLi)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Создание подключения
$conn = new mysqli($servername, $username, $password);
// Проверяем соединение
if ($conn->connect_error) {
die("Ошибка подключения: " . $conn->connect_error);
}
echo "Подключено успешно";
?>
Объяснение примера: В данном случае, мы создаем экземпляр класса mysqli
, предоставив все необходимые данные, необходимые для установления соединения, такие как хост, имя пользователя, пароль и т.д. Если экземпляр создан успешно, соединение будет успешным, в противном случае возникнет ошибка при установлении соединения.
Примечание: $ 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: Если вам более понятен и удобен порядок работы в процедурном формате, то можно использовать тот же метод, но в несколько ином синтаксисе.
Пример (процедура MySQLi)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Создание подключения
$conn = mysqli_connect($servername, $username, $password);
// Проверяем соединение
if (!$conn) {
die("Ошибка подключения: " . mysqli_connect_error());
}
echo "Подключено успешно";
?>
Объяснение примера: В процедурном подходе MySQLi вместо создания экземпляра мы можем использовать функцию mysqli_connect()
, доступную в PHP, для установления соединения. Эта функция принимает информацию в виде аргументов, таких как хост, имя пользователя, пароль, имя базы данных и т.д. Эта функция возвращает идентификатор ссылки MySQL при успешном соединении или FALSE, если соединение не удалось установить.
Подключение к БД средствами PDO: Хорошим решением для работы с веб-проектами является применение технологии PDO (PHP Data Objects). Преимущество технологии PDO (PHP Data Objects) в том, что с ее помощью можно работать с различными базами данных, не меняя основной код проекта. В этом случае мы подключаемся к базе данных, используя объекты данных в PHP, как описано ниже:
Пример (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 используется для обработки любых проблем, которые могут возникнуть в наших запросах к базе данных. Если в блоке try {}
возникает исключение, сценарий прекращает выполнение и переходит непосредственно к первому блоку catch() {}
.
Примечание: В приведенном выше примере PDO мы также указали базу данных (myDB). PDO требуется действующая база данных для подключения. Если база данных не указана, выдается исключение.
Закрытие соединения
Когда мы устанавливаем соединение с базой данных MySQL из сценария PHP, мы также должны по завершению работы отключать или закрывать соединение с БД. Соединение с базой данных MySQL будет закрыто автоматически по завершении скрипта. Чтобы закрыть соединение раньше, используйте следующее (мы предположили, что ссылка на соединение хранится в переменной $conn):
Объектно-ориентированный MySQLi:
<?php
$conn->close();
?>
Процедура MySQLi:
<?php
mysqli_close($conn);
?>
PDO:
<?php
$conn = null;
?>