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 de MySQL 3.x et 4.x.
PDO_MYSQL prendra avantage des requêtes natives préparées présentes dans
MySQL 4.1 et supérieur. Si vous utilisez une version plus ancienne des
bibliothèques clientes mysql, PDO les émulera pour vous.
Avertissement
Prenez garde : 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, toutes requêtes DLL publiées enverra implicitement
toutes les transactions en attente.
Les constantes ci-dessous sont
définies par ce pilote et seront seulement disponibles lorsque l'extension
aura été compilée dans PHP ou chargée dynamiquement du moteur d'exécution.
De plus, ces constantes spécifiques au pilote devrait être utilisées seulement
si vous utilisez ce pilote. En utilisant les attributs spécifiques à mysql
avec le pilote de postgre pourrait causer un comportement inattendu.
PDO::getAttribute() pourrait être utilisé pour obtenir
l'attribut PDO_ATTR_DRIVER_NAME pour vérifier le
pilote, si votre code peut fonctionner sur des pilotes multiples.
Si un attribut est fixé Ã TRUE sur une classe
PDOStatement, le pilote MySQL utilisera les
versions bufférisées de l'API MySQL. Si vous écrivez du code portable,
vous devriez utiliser à la place
PDOStatement::fetchAll().
Exemple 1. Forçage des requêtes pour être bufférisées dans mysql
<?php if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') { $stmt = $db->prepare('select * from foo', array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true)); } else { die("mon application fonctionne seulement avec mysql; Je devrais utiliser \$stmt->fetchAll() Ã la place"); } ?>