PDO MySQL в PHP: подключение, установка драйвера и работа с базой данных
При разработке сайтов на PHP база данных MySQL используется для хранения пользователей, товаров, заказов, настроек и другой динамической информации. Для безопасной и удобной работы в PHP применяется расширение PDO MySQL (PHP Data Objects). Оно предоставляет единый интерфейс для взаимодействия с различными системами управления базами данных.
В этой статье разберём, что такое PDO MySQL, зачем нужен специальный драйвер, как выполняется установка, каким образом настраивается подключение и как правильно выполнять запросы MySQL PDO.
Главное преимущество PDO — возможность использовать подготовленные запросы, которые значительно снижают риск SQL-инъекций.
Что такое PDO MySQL в PHP
PDO MySQL это драйвер PDO, предназначенный для подключения PHP приложений к базе данных MySQL. Сам PDO является универсальным интерфейсом, а конкретный драйвер обеспечивает взаимодействие с определённой СУБД.
Например, для MySQL используется pdo_mysql driver. Если драйвер не установлен или отключён, PHP не сможет установить соединение с MySQL через PDO.
Условно схема работы выглядит следующим образом:
- PHP приложение обращается к PDO.
- PDO использует драйвер pdo_mysql.
- Драйвер устанавливает соединение с MySQL.
- Приложение отправляет SQL запрос.
- MySQL обрабатывает запрос и возвращает результат.
- PHP получает данные через объект PDO или PDOStatement.
Для чего используется PDO
С помощью PDO можно проводить разные действия. А именно:
- Подключаться к MySQL.
- Выполнять SQL запросы.
- Получать результаты SELECT.
- Добавлять, изменять и удалять записи.
- Использовать подготовленные выражения.
- Передавать параметры в SQL запросы.
- Обрабатывать ошибки через исключения.
- Управлять транзакциями.
При этом один и тот же подход можно применять и с другими СУБД, если для них установлен соответствующий драйвер.
PHP PDO MySQL — что нужно для работы
Чтобы php pdo mysql корректно работал, на сервере должны быть доступны PHP, расширение PDO и драйвер для MySQL.
Проверить наличие PDO MySQL можно несколькими способами. Например, в терминале:
php -m | grep -i pdo
Также можно создать небольшой PHP файл:
<?php phpinfo();
После открытия этого файла в браузере найдите раздел, связанный с PDO. Если присутствует pdo_mysql, значит драйвер активен.
Если в списке расширений отсутствует pdo_mysql, проблема обычно связана не с SQL-кодом, а с конфигурацией PHP или отсутствием соответствующего расширения.
PHP PDO MySQL install — как установить драйвер
Способ установки зависит от операционной системы и используемого окружения.
Установка PDO MySQL в Ubuntu и Debian
В Linux системах на базе Debian установка обычно выполняется через пакетный менеджер:
sudo apt update sudo apt install php-mysql
Пакет php-mysql содержит необходимые компоненты для работы PHP с MySQL, включая драйвер PDO MySQL.
После установки может потребоваться перезапуск web-сервера. Например, для Apache:
sudo systemctl restart apache2
Если используется PHP-FPM, необходимо перезапустить соответствующий сервис.
Проверить результат можно командой:
php -m | grep pdo_mysql
PDO MySQL в Windows
В Windows необходимо проверить конфигурационный файл php.ini. Найдите строку отвечающую за PDO MySQL:
extension=pdo_mysql
В некоторых версиях конфигурации строка может быть закомментирована:
;extension=pdo_mysql
В таком случае уберите символ ;, сохраните файл и перезапустите web-сервер.
Важно: CLI-версия PHP и PHP, используемый web-сервером, могут иметь разные конфигурационные файлы. Поэтому изменение одного php.ini не всегда приводит к появлению расширения в веб-приложении.
Подключение PDO MySQL в PHP файле
После установки драйвера можно создавать подключение к базе данных.
Простейший пример:
<?php $host = 'localhost'; $db = 'shop'; $user = 'root'; $pass = 'password'; $charset = 'utf8mb4'; $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; $pdo = new PDO($dsn, $user, $pass); echo 'Подключение успешно';
Здесь переменная $dsn содержит строку подключения. В ней указываются тип базы данных, сервер, имя базы и кодировка.
Для реального проекта рекомендуется сразу настроить обработку ошибок:
<?php
$dsn = 'mysql:host=localhost;dbname=shop;charset=utf8mb4';
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$pdo = new PDO($dsn, 'app_user', 'strong_password', $options);
echo 'Подключение успешно';
} catch (PDOException $e) {
echo 'Ошибка подключения к базе данных';
}
Такое подключение PDO MySQL является более подходящим вариантом для большинства современных PHP приложений.
Почему стоит использовать PDO::ERRMODE_EXCEPTION
По умолчанию ошибки PDO могут обрабатываться не так удобно, как исключения.
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
Этот режим заставляет PDO выбрасывать PDOException при возникновении ошибки.
Например, если база данных недоступна, приложение сможет перехватить исключение:
try {
$pdo = new PDO($dsn, $user, $password, $options);
} catch (PDOException $e) {
// Логирование ошибки
}
В рабочем проекте не следует показывать пользователю подробный текст $e->getMessage(), поскольку он может раскрыть внутреннюю информацию о сервере или базе данных.