Utiliser Pear::MDB2 pour accèder à votre base de donnés

Lors d'un développement de site php/mysql, il est courant d'utiliser les API standards : mysql_connect, mysql_query, mysql_fetch_array etc… Cependant, lors d'un portage vers un autre SGBD et parfois même lors d'une montée de version du même SGBD, l'utilisation des API pose problème puisqu'une réécriture s'impose afin de rendre le code compatible. C'est ici qu'interviennent les couches d'abstraction de données. MDB2 fait partie des ces librairies vous permettant de vous affranchir de ces problèmes de compatibilité.

Drivers

MDB2 s'utilise avec des drivers. Un driver n'est autre qu'une interface (objet dans le cas de MDB2) permettant l'accès à différentes bases de données. Les bases de données actuellement disponibles pour MDB2 sont :

  • MySQL, PostgreSQL, Oracle, MSSQL, SQLite
  • Frontbase, Querysim, Interbase/Firebird

Fonctionnalités

MDB2 est une librairie orientée objet. Sa grande force repose sur la portabilité. Voici quelques unes des caractéristiques principales:

  • Multiples options de fetch (par nom, par indice, les deux etc…), fonctions de gestion du SGBD (création, altération etc…)
  • Emulation de l'auto incremennt et de LIMIT, du mode prepare execute pour les SGBD qui ne le supportent pas
  • Support des transactions, des clés uniques, des index, des clés primaires

Installation

Prérequis: le core de PEAR doit être installé et chargé. Pour plus d'informations et si vous êtes sur un hébergeur mutualisé, consulter l'article Installer PEAR chez un hébergeur mutualisé.

Télécharge la dernière version du package MDB2 et décompressez la comme suit:

pear_mdb2.gif

Utilisation

Ce que j'ai l'habitude de faire c'est créer un fichier application.php que je charge dans chacune de mes pages php (require_once "application.php") et qui contient la connexion à la base de données. De même j'ai un autre fichier deconnexion.php que je charge tout en bas de mes pages php (dans le pied de page = footer). Voici leur codes respectifs:

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
// Ajout des package pear dans le PATH
// Consulter l'article "Installer PEAR chez un hébergeur mutualisé"
require_once("iniset.php");
 
// Les param de connexion à la BD
// Format: mysql://utilisateur:mot_de_passe@hote/base_de_données
$dsn = "mysql://root:password@localhost/database";
 
// On charge le package MDB2
require_once "MDB2.php";
 
// Quelque options
$options = array(
"debug" => 2,
"portability" => MDB2_PORTABILITY_ALL,
);
 
// On se connecte
$mdb2 =& MDB2::connect($dsn, $options);
 
// Gestion des erreurs
if (PEAR::isError($mdb2)) {
  die($mdb2->getMessage());
}
 
// On se met en FETCHMODE association ce qui permet de récupérer les enregistrements avec le nom de la colonne dans la BD
// p.ex: $row["adresse"] plutot que $row[0]
$mdb2->setFetchMode(MDB2_FETCHMODE_ASSOC);
?>

La déconnexion:

 
<?php
// On déconnecte à la fin du script
$mdb2->disconnect();
 ?>

Et maintenant un exemple de requete et de récupération des résultats:

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$sql = "SELECT id, nom FROM ma_table WHERE id = 6";
 
$result =& $mdb2->query($sql);
 
if (PEAR::isError($result)) {
  die ($result->getMessage());
  // on peut trés bien faire une redirection avec le message d’erreur en session
  // $_SESSION["error_message"] = "Une erreur est survenue:" . $result->getMessage()
  // header("Location: index.php");
}
 
// Ca a marché, on parcours les enregistrements
while ($row = $result->fetchRow()) {
$id = $row["id"];
$nom = $row["nom"];
echo $id . ":" . $nom . "<br />";
}
 
// On libére les ressources
$result->free();

Il ne vous reste plus qu'a essayer par vous même et de lire la Documentation sur ce package pour trouver les fonctions dont vous avez besoin!

A lire également

Filed under: PHP
Tags: , , ,

Leave a Reply