PDO, couche d’abstraction de données pour PHP 5
PDO (PHP Data Object) est une couche d’abstraction ou interface entre le code d »une application et les appels natifs réalisés vers le serveur de base de données.
Une application doit être prête à pouvoir fonctionner dans un environnement applicatif différent de celui pour lequel elle a été originellement prévue. Et les couches d’abstraction permettent de rendre les applications utilisables avec de nombreuses bases de données.
C’est aujourd’hui la méthode recommandée d’accès aux bases de données pour toute application utilisant PHP 5.1+. A terme, une application PHP 5 ne sera plus liée à une seule base (le plus souvent MySQL), mais à PDO, et donc potentiellement à n’importe quel SGBD adéquat parmi SQLite (activé par défaut), MySQL, PostgreSQL, Oracle, Sybase, SQL Server, …
Avantages
* interface pour SGBD : peut être utilisé pour accéder à n’importe quel Système de Gestion de base de Données.
* orienté objet : les objets PDO et PDOStatement peuvent être étendus, il est donc tout à fait possible de personnaliser et remodeler une partie du comportement initial.
* exception : les objets de l’interface PDO utilisent des exceptions, il est donc tout à fait possible d’intégrer facilement un système de gestion des erreurs.
Exemple de connexion avec interception d’erreur
1.try
2.{
3.$cnx = new PDO(‘mysql:host=’.$serveur.’;port=’.$port.’;dbname=’.$bdd, $user, $passwd);
4.$cnx->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
5.$cnx->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true); //peut être obligatoire selon la configuration de votre serveur
6.}
7.catch (PDOException $error) //Le catch est chargé d’intercepter une éventuelle erreur
8.{
9.echo ‘N° : ‘.$error->getCode().’<br />’;
10.die (‘Erreur : ‘.$error->getMessage().’<br />’);
11.}
L’un des grands avantages de PDO est sa capacité à s’adapter au format des données récupérées :
Exemples
1. $res = $cnx->query(« SELECT * FROM produits; »);
2. while ($row = $res->fetch(PDO::FETCH_NUM)){
3. // $row est un tableau avec des clefs numériques
4. }
1. $res = $cnx->query(« SELECT * FROM produits; »);
2. while ($row = $res->fetch(PDO::FETCH_ASSOC)){
3. // $row est un tableau associatif
4. }
1. $res = $cnx->query(« SELECT * FROM produits; »);
2. while ($row = $res->fetch(PDO::FETCH_BOTH)){
3. // $row est un tableau associatif avec des clefs numériques
4. }
1. $res = $cnx->query(« SELECT * FROM produits; »);
2. while ($obj = $res->fetch(PDO::FETCH_OBJ)) {
3. // $obj est une instance de stdClass()
4. }
1. $res = $cnx->query(« SELECT nom FROM produits WHERE id=42; »);
2. $row = $res->fetchColumn()
3. if ($row) {
4. // $row est une chaîne
5. }
1. $res = $cnx->query(« SELECT * FROM produits; »);
2. $contenu = $res->fetchAll(PDO::FETCH_ASSOC);
3. // $res est un tableau de tous les lignes du résultat
4. // où chaque ligne est un tableau associatif
Enfin, PDO permet également d’utiliser les requêtes préparées, les paramètres liés, la récupération partielle de données, les transactions, les métadonnées…
Un monde à explorer pour se faciliter l’usage des bases de données depuis PHP et j’avou prendre du plaisir à l’utiliser.
Un très bon tutoriel est disponible sur le site du zéro: http://www.siteduzero.com/tutoriel-3-34790-pdo-interface-d-acces-aux-bdd.html
La documentation officielle est disponible ici : http://fr3.php.net/pdo.

Loading ...