pdo

5 Bonnes raisons d’utiliser PDO

1 – Interopérabilité

PDO offre une multitude de « drivers » : des connecteurs vous permettant, en utilisant le même code de faire vos requêtes que vous vous adressiez à une base Oracle, MySQL ou même SQLite.

Voici les drivers actuellement supportés par PDO :

  • CUBRID
  • MS SQL Server
  • Firebird/Interbase
  • IBM
  • Informix
  • MySQL
  • MS SQL Server
  • Oracle
  • ODBC et DB2
  • PostgreSQL
  • SQLite
  • 4D

Vous l’aurez compris, l’intérêt est d’offrir la possibilité à votre code d’être « porté » sous un autre environnement sans avoir de problèmes de compatibilité.

2 – Sécurité

En utilisant le système de requêtes préparées de PDO, vous n’avez plus (trop) à vous soucier de contrôler les entrées des utilisateurs. En effet, les requêtes préparées sont comme leur nom l’indique préparées avant exécution, et les entrées sont filtrées avant leur exécution sur la base. Si votre SGBD ne gère pas les « prepared statements », pas de soucis, PDO gère pour vous l’émulation de cette fonctionnalité. L’intérêt est double puisque une même requête peut servir plusieurs fois avec des variables différentes :

$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);

// insertion d'une ligne
$name = $_POST['name']; // injection possible mais filtrée par PDO
$value = 1;
$stmt->execute();

// insertion d'une autre ligne avec des valeurs différentes
$name = 'two';
$value = 2;
$stmt->execute();

3 – Objet

PDO est entièrement objet, c’est à dire qu’il n’existe pas d’alternative à PDO en procédural. Vous êtes donc libre d’étendre comme bon vous semble la classe PDO afin de faire votre propre librairie. On peu imaginer étendre PDO pour le faire fonctionner en Singleton. Ou encore, développer une classe parente gérant les transactions pour faire des requêtes en lot et ainsi optimiser les flux entre le code et le serveur MySQL.

4 – Transactions

Une transaction est un bon moyen de contrôler la consistence des données envoyées. En effet, on peut y faire des lots de requêtes (session de transaction) et revenir en arrière si l’une d’entre elles « plante » (rollback).

Avec PDO, ce procédé est simplifié grâce aux méthodes « beginTransaction », « commit » et « rollback ». Le fait de faire un beginTransaction, ouvre une session MySQL et permet de ne pas exécuter la requête dès qu’un « ; » est trouvé. Les deux autres méthodes commit et rollback, valident ou annulent respectivement les requêtes lancées pendant la transaction.

5 – Gestion des « objets larges »

Une autre « feature » beaucoup moins connue est la possibilité de gérer les objets larges de votre base de données. On peut simplement et directement « streamer » un LOB (Large OBject) depuis le SGBD vers un navigateur par le biais des fonctions de flux de PHP. A l’inverse, on peut également écrire un flux de données dans le SGBD, avec les mêmes fonctions.

 

  • Partner links