
Le langage PHP est en pratique, quasiment indissociable de MySQL tant l’utilisation de ce tandem est répandue sur la toile. Tous les hébergeurs et fournisseurs d’accès Internet offrent ce service à leurs abonné(e)s.
Comment remplir une page Web avec des informations provenant d’une BD MySQL ?
En utilisant les extensions MySQL de PHP, c’est ce que nous allons étudier dans cette partie du cours.
PHP + MySQL permettent de développer des sites Internet au contenu totalement dynamique, et d’écrire des applications de gestion complètes sur le web, comme des applications de e-commerce par exemple.
Leur particularité par rapport à d’autres solutions techniques (.Net + SQLServer, Java + Oracle, …) est que cette solution est facile à mettre en place, Open Surce et donc gratuite !
MySQL peut être accédée en PHP de 3 manières différentes, grace :
- à l’extension standard ‘mysql’ (ensemble de fonctions préfixées par ‘mysql_’)
- à l’extension améliorée ‘mysqli’ ou Improved MySQL (ensemble de fonctions préfixées par ‘mysqli_’)
- au pilote ‘PDO MySQL’ (ensemble de fonctions préfixées par ‘pdo_mysql’)
Elles seront vues en détail dans les chapitres suivants.
L’extension standard ‘ mysql ‘
Cette extension est souvent associée à la version basique du moteur MySQL. Elle est incluse en standard dans certains packages comme ‘easyPHP’ par exemple.
Elle utilise 3 ressources principales :
- une connexion
- un ordre SQL
- un ensemble de lignes résultats (si le SQL est un SELECT bien sûr) : le ‘result set’ ou ‘curseur’
Du fait des limites de cette extension, les ordres SQL sont exécutés directement sans phase de préparation (parsing, bind),
– il n’y a pas de gestion explicite de transaction (commit, rollback). Les mises à jour seront par défaut AUTOCOMMITées
Voici d’après le site officiel PHP, la liste complète (une cinquantaine) des fonctions de l’extension ‘mysql’ en PHP5
L’extension ‘ mysqli ‘
Par rapport à la précédente :
- supporté par MySQL à partir de 4.1.3 seulement
- une approche objet des traitements (objet ‘mysqli’),
- la gestion des transactions,
- beaucoup plus de fonctions,
- les ordres SQL préparés (avec bind variables),
soit plus de 110 fonctions, documentées sur http://fr.php.net/manual/fr/ref.mysqli.php
L’extension ‘ pdo_mysql ‘
pdo_mysql est un pilote spécifique pour MySQL, qui implémente l’interface de PHP Data Object. Comme son nom l’indique cette interface est orientée objet. La documentation est disponible sur http://fr.php.net/manual/fr/ref.pdo.php
A partir de la V5 de PHP, cette extension tend à remplacer pear_db.
C’est donc une couche d’interaction avec le SBGD (database layer) qui comme ODBC sur WIndows, permet d’écrire du code SQL portable, et est (relativement) indépendante du SGBD relationnel cible.
Les drivers suivants sont actuellement inclus :
PDO_MYSQL MySQL 3.x/4.x/5.x
PDO_DBLIB : pour FreeTDS / Microsoft SQL Server / Sybase
PDO_OCI : pour Oracle Call Interface
PDO_ODBC : pour ODBC v3 (IBM DB2 unixODBC et win32 ODBC
PDO_PGSQL : pour PostgreSQL
PDO_SQLITE : pour SQLite 3 et SQLite 2
PDO_FIREBIRD : pour Firebird/Interbase 6
PDO_IBM : pour IBM DB2
PDO_INFORMIX : pour IBM Informix Dynamic Server
PDO supporte les procédures stockées, les ordres préparés, les transactions,…