L'extension PHP Data Objects (PDO) définit une interface légère et cohérente permettant à PHP d'accéder aux bases de données.
PDO fournit une couche d'abstraction d'accès aux données, ce qui signifie que quelle que soit la base de données utilisée, les mêmes fonctions (méthodes) peuvent être utilisées pour interroger et obtenir des données.
PDO est publié avec PHP5.1 et peut également être utilisé dans l'extension PECL de PHP5.0, mais ne peut pas fonctionner sur les versions PHP précédentes.
Vous pouvez vérifier si l'extension PDO est installée via la fonction phpinfo() de PHP.
Sous Unix ou Linux, vous devez ajouter l'extension suivante :
extension=pdo.so
PDO et tous les principaux pilotes sont livrés avec PHP sous forme d'extensions partagées. Pour les activer, éditez simplement le fichier php.ini et ajoutez l'extension suivante :
extension=php_pdo.dllDe plus, il existe diverses extensions de base de données correspondant aux éléments suivants :
;extension=php_pdo_firebird.dll;extension=php_pdo_informix.dll;extension=php_pdo_mssql.dll;extension=php_pdo_mysql.dll;extensio n=php_pdo_oci.dll;extension=php_pdo_oci8.dll;extension=php_pdo_odbc.dll;extension=php_pdo_pgsql.dll;extension=php_pdo_sqlite.dll
Après avoir défini ces configurations, nous devons redémarrer PHP ou le serveur Web.
Examinons ensuite des exemples spécifiques. Voici un exemple d'utilisation de PDO pour se connecter à la base de données MySql :
<?php$dbms='mysql'; //Type de base de données $host='localhost'; //Nom d'hôte de la base de données $dbName='test'; //Base de données utilisée $user='root'; $pass=''; //Mot de passe correspondant $dsn="$dbms:host=$host;dbname=$dbName"; try { $dbh = new PDO($dsn, $user, $pass); //Initialiser un objet PDO echo "Connexion réussie<br/>"; /*Vous pouvez également effectuer une opération de recherche pour chaque ($dbh->query('SELECT * from FOO') as $row) { print_r($row) ; //Vous pouvez utiliser echo($GLOBAL); pour voir ces valeurs} */ $dbh = null;} catch (PDOException $e) { die ("Erreur : " . $e->getMessage() . "<br/>");}//Par défaut, ce n'est pas une connexion longue. Si vous avez besoin d'une connexion longue à la base de données, vous devez ajouter un paramètre à la fin : array(PDO::ATTR_PERSISTENT => true) Cela devient comme ceci : $db = new PDO( $dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));?>
C'est très simple. Examinons ensuite de plus près les instructions spécifiques de PHP PDO :
Constantes prédéfinies
Gestion des connexions de connexion PHP PDO
Transactions PHP PDO et validation automatique
Déclarations préparées et procédures stockées PHP PDO
Erreurs PHP PDO et gestion des erreurs
Objets volumineux PHP PDO (LOB)
Classe AOP :
PDO::beginTransaction — démarre une transaction
PDO::commit — Valider une transaction
PDO::__construct — Crée une instance PDO qui représente une connexion à une base de données
PDO::errorCode — Récupère le SQLSTATE associé à la dernière opération du handle de base de données
PDO::errorInfo — Renvoie les informations d'erreur de la dernière opération de base de données
PDO::exec — Exécute une instruction SQL et renvoie le nombre de lignes affectées
PDO::getAttribute — Récupère les attributs d'une connexion à une base de données
PDO::getAvailableDrivers — Renvoie un tableau de pilotes disponibles
PDO::inTransaction — Vérifiez si dans une transaction
PDO::lastInsertId — Renvoie l'ID ou la valeur de séquence de la dernière ligne insérée
PDO::prepare — Prépare une instruction SQL à exécuter et renvoie un objet PDOStatement
PDO::query — Exécute des instructions SQL et renvoie des objets PDOStatement, qui peuvent être compris comme des jeux de résultats
PDO::quote — Ajoutez des guillemets aux chaînes dans les instructions SQL.
PDO::rollBack — annuler une transaction
PDO::setAttribute — définir les attributs
Classe PDOStatement :
PDOStatement::bindColumn — Lier une colonne à une variable PHP
PDOStatement::bindParam — Lie un paramètre au nom de variable spécifié
PDOStatement::bindValue — Lier une valeur à un paramètre
PDOStatement::closeCursor — Ferme le curseur afin que l'instruction puisse être à nouveau exécutée.
PDOStatement::columnCount — Renvoie le nombre de colonnes dans le jeu de résultats
PDOStatement::debugDumpParams — Imprimer une commande de prétraitement SQL
PDOStatement::errorCode — Récupère le SQLSTATE associé à la dernière opération de handle d'instruction
PDOStatement::errorInfo — Récupère des informations d'erreur étendues liées à la dernière opération de handle d'instruction
PDOStatement::execute — exécute une instruction préparée
PDOStatement::fetch — Récupère la ligne suivante du jeu de résultats
PDOStatement::fetchAll — Renvoie un tableau contenant toutes les lignes du jeu de résultats
PDOStatement::fetchColumn — Renvoie une seule colonne de la ligne suivante dans le jeu de résultats.
PDOStatement::fetchObject — Récupère la ligne suivante et la renvoie en tant qu'objet.
PDOStatement::getAttribute — Récupère un attribut d'instruction
PDOStatement::getColumnMeta — Renvoie les métadonnées d'une colonne dans un jeu de résultats
PDOStatement::nextRowset — Passe à l'ensemble de lignes suivant dans un handle d'instruction multi-lignes
PDOStatement::rowCount — Renvoie le nombre de lignes affectées par l'instruction SQL précédente
PDOStatement::setAttribute — Définir un attribut d'instruction
PDOStatement::setFetchMode — Définit le mode de récupération par défaut pour les instructions.