Introduction
PDO_MYSQL est un pilote qui implémente l'interface de PHP Data Objects (PDO) pour
autoriser l'accès de PHP aux bases de données MySQL.
PDO_MYSQL utilises des requêtes préparées émulées par défaut.
MySQL 8
Si PHP est utilisé dans une version 7.1 antérieure à la version 7.1.16, ou PHP 7.2 antérieure à 7.2.4,
le plugin de mot de passe doit être défini à
mysql_native_password pour MySQL 8 Server, car sinon des
erreurs similaires à The server requested authentication method
unknown to the client [caching_sha2_password] peuvent apparaitre,
même si caching_sha2_password n'est pas utilisé.
Ceci est dû au fait que MySQL 8 utilise par défaut caching_sha2_password,
un plugin qui n'est pas reconnu par les anciennes versions de PHP (mysqlnd).
À la place il faut modifier le paramètre
default_authentication_plugin=mysql_native_password
dans
my.cnf. Le plugin caching_sha2_password
est pleinement supporté à partir de PHP 7.4.4. Pour les versions antérieures,
l'extension mysql_xdevapi le supporte.
Avertissement
Prendre garde toutefois : certains types de tables MySQL (moteur d'enregistrement)
ne supportent pas les transactions. Lorsque vous écrivez du code de base
de données transactionnel en utilisant un type de table qui ne supporte
pas les transactions, MySQL prétendra qu'une transaction était initiée
correctement. De plus, toute requête DLL publiée enverra implicitement
l'ensemble des transactions en attente.
Note:
Le pilote MySQL ne supporte pas proprement PDO::PARAM_INPUT_OUTPUT
via PDOStatement::bindParam(); tandis que de tel
paramètres peuvent être utilisé, il ne seront pas mis à jour
(c.à.d. la sortie actuel est ignoré).
Installation
Les distributions Linux incluent des versions binaires de PHP qui peuvent
être installées. Même si ces binaires sont construits avec les extensions
MySQL, les bibliothèques clientes doivent souvent être installées au
moyen d'un paquet additionnel. Voyez si c'est le cas pour votre distribution.
Par exemple, sur Ubuntu le package php5-mysql
installe les
extensions PHP ext/mysql, ext/mysqli, et pdo_mysql. Sur CentOS, le package
php-mysql
installe aussi ces trois extensions PHP.
Alternativement, vous pouvez compiler cette extension vous-même. Construire
PHP depuis les sources permet de préciser les extensions MySQL à embarquer,
mais aussi les bibliothèques clientes de chaque extension.
Lors de la compilation utilisez --with-pdo-mysql[=DIR]
pour installer l'extension PDO MySQL, où [=DIR]
est le chemin
de la bibliothèque de base de MySQL.
Mysqlnd et la bibliothèque par défaut.
Pour plus de détails à propos du choix de la bibliothèque, voir
Choisir une bibliothèque MySQL.
Optionnellement, l'option --with-mysql-sock[=DIR]
définit le chemin vers le socket Unix MySQL pour toutes les extensions
MySQL, y compris PDO_MYSQL. Si non spécifié, les chemins par défaut seront utilisés.
Optionnellement, l'option --with-zlib-dir[=DIR]
sera utilisée pour définir le préfixe d'installation zlib.
$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock
Le support SSL est activé en utilisant les constantes PDO_MySQL
appropriées, ce qui revient à appeler la fonction
» mysql_ssl_set() de l'API C MySQL.
De plus, SSL ne peut être activé avec PDO::setAttribute car la connexion
existe déjà. Reportez-vous à la documentation MySQL sur
» la connexion sur MySQL en utilisant SSL.
Configuration à l'exécution
Le comportement de ces fonctions est
affecté par la configuration dans le fichier php.ini.
Pour plus de détails sur les modes INI_*,
reportez-vous à
Où une directive de configuration peut être modifiée.
Voici un éclaircissement sur
l'utilisation des directives de configuration.
-
pdo_mysql.default_socket
string
-
Définit un socket de domaine Unix. La valeur peut aussi être définie au
moment de la compilation si un socket de domaine Unix est trouvé lors
de la configuration. Cette configuration INI n'est disponible que
sous Unix.
-
pdo_mysql.debug
bool
-
Active le débogage pour le driver PDO_MYSQL. Cette configuration n'est
disponible que lorsque le driver PDO_MYSQL est compilé avec
mysqlnd et en mode de débogage PDO.