Les PHP Data Objects (PDO) ont été introduits comme extension PECL en PHP 5.0, et sont devenus partie intégrale de la distribution PHP en version 5.1.0. L'extension PDO propose une interface constante pour accéder aux bases de données, et est utilisée avec des pilotes PDO. Chaque pilote assure le relais avec une base de données spécifique, mais l'envoi de requête et la réception des données sont fait depuis les fonctions PDO. Le pilote est choisi avec la fonction PDO::__construct().
Notez que l'extension PDO et ses pilotes sont conçus pour être des extensions partagées. Cela permet des mises à jour simples des pilotes à partir de PECL, sans forcer la recompilation de PHP.
Au moment de la publication de PHP 5.1.x, PDO est fin prêt pour une utilisation grand public, et peut être adopté dans la plupart des situations. Cependant, il faut bien comprendre que PDO et ses pilotes sont relativement jeunes, et manquent encore de certaines fonctionnalités spécifiques à une base de données. Faites votre évaluation complète de PDO avant de l'adopter pour un projet.
L'ancien code aura besoin des extensions spécifiques de base de données, qui sont toujours entretenues.
En PHP 4, le support MySQL 3 était automatique. Avec les versions 5.0 de PHP, il y a maintenant 2 extensions MySQL, qui portent les noms de 'mysql' et 'mysqli' : elles sont été conçues pour supporter MySQL < 4.1 et MySQL 4.1 et plus récent, respectivement. Avec l'introduction de PDO, qui fournit une interface rapide avec toutes les bases de données supportées par PHP, le pilote PDO_MYSQL peut supporter toutes les versions de MySQL (MySQL 3, 4 or 5) avec du code PHP écrit avec PDO, en fonction de la version de la bibliothèque de MySQL compilée avec PHP. Les anciennes extensions MySQL restent en place pour assurer la compatibilité ascendante, mais elles ne sont plus activées par défaut.
En PHP 5.0.x, le support de SQLite 2 a été ajouté dans la distribution, et a été placé en PECL pour PHP 4.3 et 4.4. Avec l'introduction de PDO, l'extension sqlite se dédouble pour servir aussi de pilote PDO. Cela est dû au fait que l'extension PDO de PHP 5.1.x dépend de PDO.
PHP 5.1.x inclut un grand nombre d'interface alternatives pour sqlite :
L'extension sqlite fournit une approche classique procédurale et POO, telle que celle qui a été utilisée dans les anciennes versions de PDO. Elle fournit aussi un pilote 'sqlite2', qui permet d'accéder au code SQLite2, en utilisant PDO.
PDO_SQLITE fournit un pilote 'sqlite' version 3. SQLite version 3 est nettement supérieur à SQLite version 2, mais les formats de fichiers des deux versions sont incompatibles.
Si votre projet basé sur SQLite est déjà écrit, et fonctionne avec d'anciennes versions de PHP, vous pouvez continuer à utiliser ext/sqlite sans problème, mais vous devez explicitement activer PDO et sqlite. Les nouveaux projets doivent utiliser PDO et le pilote 'sqlite' version 3, car il est plus rapide que le pilote SQLite 2, dispose d'un verrou efficace, supporte les commandes préparées et les colonnes binaires natives.
Vous devez activer PDO pour utiliser l'extension SQLite. Si vous voulez compiler PDO comme extension partagée, alors l'extension SQLite doit être aussi une extension partagée. C'est la même chose pour le pilote PDO.