Функції MySQL (PDO_MYSQL)

Вступ

PDO_MYSQL – це драйвер, який реалізує інтерфейс PHP Data Objects (PDO) та дає PHP доступ до баз даних MySQL.

Драйвер PDO_MYSQL за умовчанням використовує емульовану підготовку.

MySQL 8

При запуску PHP до версії 7.1.16 або PHP з версії 7.2 до 7.2.4 як плагін шифрування паролів за промовчанням для сервера MySQL 8 встановлюють mysql_native_password, інакше буде видана помилка на кшталт The server requested authentication method unknown to the client[caching_sha2_password], даже когда плагинcaching_sha2_passwordне задан.

Причина цього в тому, що на сервері MySQL 8 як плагін за замовчуванням вказано caching_sha2_password, який не розпізнається старими версіями PHP (модулем mysqlnd). Замість нього у файлі конфігурації сервера my.cnf вказують default_authentication_plugin=mysql_native_passwordПлагинcaching_sha2_password отримав повну підтримку з PHP 7.4.4. У попередніх версіях PHP його підтримує модуль mysql_xdevapi

Увага

Обережно: MySQL таблиці підсистеми зберігання даних не підтримують транзакції. Якщо в коді, який працює з транзакційною базою даних, вказана таблиця, що не підтримує транзакції, MySQL вдасть, що транзакцію успішно розпочато. І ще, кожен виконаний DDL-запит буде неявно фіксувати незавершені транзакції - тобто завершувати відкриті транзакції і виконувати стек незавершених запитів.

Зауваження :

Драйвер MySQL неправильно обробляє біт **PDO::PARAM_INPUT_OUTPUT**в методеPDOStatement::bindParam(); хоча такі параметри і можна використовувати, вони не оновлюються (тобто фактичний висновок ігнорується).

Установка

Зазвичай інсталяційні пакети Unix мають у собі бінарні пакети PHP. Незважаючи на те, що ці бінарні пакети зазвичай зібрані за допомогою модуля MySQL, може знадобитися установка бібліотек модулів окремо. Перевірте дистрибутив на наявність потрібних бібліотек через пакетний менеджер.

К Прикладу, на Ubuntu установка пакетаphp5-mysql встановлює модулі ext/mysql, ext/mysqli та PDO_MYSQL. На CentOS пакетphp-mysql також встановлює ці три модулі.

Також ви завжди можете скомпілювати необхідні модулі самостійно. Складання PHP із вихідних кодів дозволить вам зібрати саме ті модулі MySQL, які вам потрібні, а також вибрати потрібну клієнтську бібліотеку для кожного модуля.

Используйте**--with-pdo-mysql[=DIR]** для встановлення модуля PDO MySQL, де необов'язковий параметр [=DIR] вказує директорію, де встановлено MySQL. За замовчуванням використовується бібліотека mysqlnd. . Більш детальний розбір на вибір бібліотеки можна почитати в розділі "Вибір бібліотеки MySQL".

Додатковий параметр --with-mysql-sock[=DIR] вказує розташування unix-сокету MySQL для всіх модулів MySQL, включаючи PDO_MYSQL. Якщо параметр не вказано, пошук здійснюється в директоріях за промовчанням.

Додатковий параметр --with-zlib-dir[=DIR] використовується як префікс шляху до libz.

$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock

Підтримка SSL вмикається, використовуючи відповідну константу PDO_MySQL, яка еквівалентна виклику » API MySQL-функції mysql_ssl_set() в C. До того ж, SSL не може бути включений за допомогою PDO::setAttributeтому, що з'єднання вже існує. Дивіться документацію MySQL про » підключення до MySQL з SSL

Обумовлені константи

Наведені нижче константи визначені цим драйвером і будуть доступні лише у випадку, якщо PHP був зібраний за допомогою цього модуля, або модуль був динамічно завантажений під час виконання. Крім того, ці залежні від драйвера константи повинні бути використані лише разом із цим драйвером. Використання атрибутів, специфічних для деякого драйвера з іншим драйвером, може викликати несподівану поведінку. Якщо ваш код виконується з кількома драйверами, можна використовувати функцію PDO::getAttribute()для получения атрибута**PDO::ATTR_DRIVER_NAME**для проверки драйвера.

PDO::MYSQL_ATTR_USE_BUFFERED_QUERY(bool)

За замовчуванням всі запити виконуються в буферизованому режимі. Якщо цей атрибут встановлено на значення false для об'єкту PDO, драйвер MySQL використовуватиме небуферизований режим.

Приклад #1 Встановлення небуферизованого режиму MySQL

Loading...

PDO::MYSQL_ATTR_LOCAL_INFILE(int)

увімкнути LOAD LOCAL INFILE

Зверніть увагу, що ця константа може бути використана тільки в масиві driver_options під час створення дескриптора нової бази даних.

PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY(string)

Дозволяє обмежити завантаження LOCAL DATA файлами, розташованими у вказаному каталозі. Доступно з версії PHP 8.1.0.

Зверніть увагу, що ця константа може використовуватися лише у масиві driver_options під час створення нового дескриптора бази даних.

PDO::MYSQL_ATTR_INIT_COMMAND(string)

Команда, яку потрібно виконати при підключенні до MySQL-сервера. Також буде автоматично виконана під час перепідключення.

Зверніть увагу, що ця константа може бути використана тільки в масиві driver_options під час створення дескриптора нової бази даних.

PDO::MYSQL_ATTR_READ_DEFAULT_FILE(int)

Читання іменованих параметрів із файлу my.cnf. Ця опція недоступна, якщо використовується mysqlnd, тому що mysqlnd не читає конфігураційні файли MySQL.

PDO::MYSQL_ATTR_READ_DEFAULT_GROUP(int)

Читання іменованої групи параметрів з файлу my.cnf або файлу, визначеного в константі MYSQL_READ_DEFAULT_FILE. Ця опція недоступна, якщо використовується mysqlnd, тому що mysqlnd не читає конфігураційні файли MySQL.

PDO::MYSQL_ATTR_MAX_BUFFER_SIZE(int)

Максимальний розмір буфера. За промовчанням дорівнює 1 Мб. Ця константа не підтримується під час компіляції разом з mysqlnd.

PDO::MYSQL_ATTR_DIRECT_QUERY(int)

Виконувати прямі запити, не використовувати підготовлені конструкції.

PDO::MYSQL_ATTR_FOUND_ROWS(int)

Повертає кількість знайдених рядків, а не кількість змінених рядків.

PDO::MYSQL_ATTR_IGNORE_SPACE(int)

Дозволяє прогалини після імен функцій. Робить усі імена функцій зарезервованими словами.

PDO::MYSQL_ATTR_COMPRESS(int)

Увімкнути стиснення мережного з'єднання.

PDO::MYSQL_ATTR_SSL_CA(int)

Шлях до файлу SSL-сертифіката.

PDO::MYSQL_ATTR_SSL_CAPATH(int)

Шлях до директорії, що містить SSL-сертифікати довірених центрів (CA), що зберігаються у форматі PEM.

PDO::MYSQL_ATTR_SSL_CERT(int)

Шлях до файлу із SSL-сертифікатом.

PDO::MYSQL_ATTR_SSL_CIPHER(int)

Список з одного або більше допустимих шифрів для використання у SSL-шифруванні у форматі, який розуміє OpenSSL. Наприклад: DHE-RSA-AES256-SHA:AES128-SHA

PDO::MYSQL_ATTR_SSL_KEY(int)

Шлях до файлу із ключем SSL.

PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT(int)

Надає спосіб вимкнення перевірки SSL-сертифіката сервера.

Існує починаючи з PHP 7.0.18 та PHP 7.1.4.

PDO::MYSQL_ATTR_MULTI_STATEMENTS(int)

Если установлено как**false**, забороняє запуск множинних запитів, як для PDO::prepare(), так і для PDO::query()

Зверніть увагу, що ця константа може бути використана тільки в масиві driver_options під час створення нового дескриптора БД.

Налаштування під час виконання

Поведінка цих функцій залежить від установок у php.ini.

Опції конфігурації PDO_MYSQL

ИмяПо умолчаниюМесто изменения
pdo_mysql.default_socket"/tmp/mysql.sock"INI_SYSTEM
pdo_mysql.debugNULLINI_SYSTEM

Додаткова інформація та опис режимів INI_* дано у розділі «Місця встановлення параметрів конфігурації».

Коротке пояснення конфігураційних директив.

pdo_mysql.default_socketstring

Встановлює сокет домену UNIX. Цю опцію необхідно вказати під час компіляції, якщо сокет домену знайдено під час конфігурації. Це налаштування лише для Unix.

pdo_mysql.debugbool

Дозволяє налагодження для PDO_MYSQL. Це налаштування доступне лише, якщо PDO_MYSQL скомпільований з "mysqlnd" та в режимі налагодження PDO.

Зміст

  • PDO_MYSQL DSN— З'єднання з базою даних MySQL