Lorsque l'on développe une application Web, les requêtes SQL sont réalisées grâce à des appels natifs (c'est à dire spécifique à un SGBD). Par exemple pour demander à php de se connecter à MySQL on utilisera "mysql_connect()" et "mysql_query()" pour executer une requête. Ces appels natifs sont présents dès que l'application accède à une donnée et sont donc disséminés dans l'applications. Dès lors, une telle application est forcément destinée à un SGBD en particulier car modifier chaque appel natif dans le code source est une lourde tache. C'est pourquoi les choses ont évoluées : Aujourd'hui, il est courant d'utiliser une couche d'abstraction pour accéder à un Système de Gestion de Base de Données (SGBD).

Comment cela fonctionne t'il ? Une couche d'abstraction est une interface entre le code d"une application et les appels natifs réalisés vers le serveur de base de données. Cela n'est pas si simple. Il faut savoir que les fonctionnalités offertes par les bases de données ne sont pas standardisées. Ainsi, les procédures stockées, l'auto-incrémentation, ... sont autant de fonctions que la couche d'abstraction doit émuler si elles sont absentes du SGBR cible. On ne peut toutefois pas s'abstraire de tout. Certains types de données sont inexistants dans certains SGBD et là ... rien à faire. On ne peut pas s'abstraire de tout. En cas de changement de SGBD (passage de PostGresSQL à MySQL ou à Oracle, ...), il suffit simplement de mettre à jour un fichier de configuration.

De nombreux outils d'abstraction existent, dans le monde PHP citons Creole, MetaBase et AdoDB. Ces outils sont courants, mais comptent encore des lacunes que PDO vient combler.

PDO est né à l'été 2003 au LinuxTag de Karlsruhe. Il est maintenant intégré à PHP à partir de la version 5.1. PDO offre 3 grands avantages :
  • performance : PDO est inclus à PHP il est donc à base de C compilé. Son exécution est donc beaucoup plus rapide qu'une extension en PHP (comme ADODB qui est interprété).
  • Sécurité : PDO offre des moyens efficaces contre le piratage (notamment l'injection SQL). L'injection SQL consiste à tenter de modifier le contenu de la base de données via à un champ de saisie. Pour cela, on utilise des guillemets et des commandes SQL. La solution consiste à filtrer tous les champs de saisie pour 'échapper' les guillemets. PDO offre une meilleure solution. Les paramètres des requêtes sont passés en paramètres. L'injection devient de ce fait impossible.
  • Standardisation : PDO est disponible nativement sur PHP 5.1 et est donc disponible sans installation supplémentaire.

Le framework Nalis qui utilisait initialement AdoDB a été migré vers PDO. Cette opération a été simplifiée par le fait que Nalis respecte le design Pattern MVC. Le design Pattern MVC sépare le code HTLM (Vue), des scripts PHP (Controleur) et les accès aux données (Modèle). Il est donc facile d'identifier les parties concernées par l'accès aux données. Nalis a donc ajouté la corde PDO à son Arc pour implémenter le Système d'Information de la société Dargent. Cette application gère les achats, les ventes et les suivis d'exploitations des chantiers de la société. Ainsi, Nalis livrera une application utilisant PDO dans les semaines à venir.