PDO MySQL в PHP: подключение, установка драйвера и работа с базой данных

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.
Условно схема работы выглядит следующим образом:

  1. PHP приложение обращается к PDO.
  2. PDO использует драйвер pdo_mysql.
  3. Драйвер устанавливает соединение с MySQL.
  4. Приложение отправляет SQL запрос.
  5. MySQL обрабатывает запрос и возвращает результат.
  6. PHP получает данные через объект PDO или PDOStatement.

Для чего используется PDO

С помощью PDO можно проводить разные действия. А именно:

  1. Подключаться к MySQL.
  2. Выполнять SQL запросы.
  3. Получать результаты SELECT.
  4. Добавлять, изменять и удалять записи.
  5. Использовать подготовленные выражения.
  6. Передавать параметры в SQL запросы.
  7. Обрабатывать ошибки через исключения.
  8. Управлять транзакциями.

При этом один и тот же подход можно применять и с другими СУБД, если для них установлен соответствующий драйвер.

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(), поскольку он может раскрыть внутреннюю информацию о сервере или базе данных.