Il suffit de jeter un oeil aux fonctions et classes permettant d'accéder à une base de données
[c'est quoi?]
SQLite
[où?]
et MySQL
[où?]
pour constater que la façon de coder dépend de la base de données choisie. Cela peut-être génant à plusieurs titres
- Si vous travaillez pour différents projets, avec différentes bases, il faut apprendre comment faire pour chaque base.
- Si vous travaillez sur un projet et voulez laisser l'utilisateur final choisir le type de base de données vous devez réécrire le même bout de code pour les différentes bases.
- Si vous avez opté pour une base de données "modeste" (ex: sqlite) et voulez changer pour une base de données plus pro (ex: mysql) vous aurez a ré-écrire toute la partie d'accès à la base.
|
Heureusement, il existe une solution. Le module
pdo. Ce module permet d'accéder à diverses bases de données avec le même code PHP.
 |
- Ceci ne répond que partiellement à la problématique soulevée. Le code PHP est en effet commun aux différents bases mais le code SQL
[c'est quoi?]
risque de devoir être adapté au cas par cas (sans parler des problèmes liés aux bases ne gérant pas les transactions, etc.)
|
Le module PDO nécessite le recours à la programmation orientée objet
[c'est quoi?]
.
Il y a fort à parier que le module PDO est déjà activé dans votre environnement. Si ce n'est pas le cas, il suffit d'installer
[comment?]
le module
pdo (i.e.
php_pdo.dll sous window).
En plus du module PDO, il faut installer le module de la base de données (comme indiqué dans le chapitre correspondant à la base).
D'une manière générale l'accès à une base de données se réalise en 3 étapes:
- La connexion
- La requête SQL
- La déconnexion
|
Le constructeur PDO() attend 1 paramètre obligatoire (une chaîne de caractères, appelée DSN pour Data Source Name - autrement dit Nom de Source de Données - , permettant d'identifier la base de données à laquelle se connecter) et 3 paramètres optionnels: le nom de l'utilisateur, le mot de passe et un tableau d'éventuels autres paramètres.
La structure de la chaîne DSN varie d'une base à l'autre:
- Pour SQLite3, elle prend la forme sqlite:<nom du fichier>
- Pour SQLite2, elle prend la forme sqlite2:<nom du fichier>
- Pour MySQL, elle prend la forme mysql:host=<nom du serveur>;dbname=<nom de la base> on peut également y ajouter port=<numero de port>
|
La structure d'un script d'accès à une base via PDO est donc la suivante
<?php
require_once("pdo_conf_inc.php");
// Connexion
try {
$bd = new PDO($pdo_dsn, $bd_user, $bd_pwd);
} catch (PDOException $e) {
die("La connexion a la base via la chaine [".$pdo_dsn."] a echouee".
" pour la raison suivante: ".$e->getMessage());
}
// Nous sommes connectes. On peut executer les requetes
// Deconnexion
$bd = null;
?> |
pour lequel nous avons créé un script de configuration comme celui-ci (configuré pour SQLite3 mais aisément adaptable à MySQL)
|
<?php
// Type de base de donnees: mysql, sqlite
$bd_type = "sqlite";
// nom du fichier sqlite
$bd_file = "phpfacile_mabase_pdo.sqlite";
// Serveur hebergeant la base de donnee
$bd_host = null;
// Nom de la base de donnee
$bd_name = null;
// Identifiant de connexion a la base
$bd_user = null;
// Mot de passe de connexion a la base
$bd_pwd = null;
$pdo_dsn = $bd_type.":".
(($bd_type=="sqlite")?$bd_file:
"host=".$bd_host.";dbname=".$bd_name);
?>
|