Pré-requis

Include en PHP

6.Le langage PHP

6.15.Utilisation de bases de données avec PHP

6.15.5.PDO: PHP Data Objects

6.15.5.1.Introduction

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.
rem
  • 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?].

6.15.5.2.Installation

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 windows).
En plus du module PDO, il faut installer le module de la base de données (comme indiqué dans le chapitre correspondant à la base).

6.15.5.3.Utilisation

6.15.5.3.1.Introduction

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

6.15.5.4.La connexion et la déconnexion

La connexion est plutôt simple. La connexion se fait lors de l'instanciation de l'objet PDO. En cas d'erreur une exception PDOException est levée.
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 déconnexion se fait à la destruction de l'objet soit automatiquement à la fin de l'exécution du script, soit (et c'est préférable) explicitement en affectant la valeur null à l'objet.
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);
?>
Ici vous pouvez apprendre :
1.Introduction
2.Installation de PHP
3.Exécuter un script PHP
4.Configuration et environnement d'exécution de PHP
5.L'environnement de développement
6.Le langage PHP
6.1.Introduction
6.2.Mon premier script
6.3.La syntaxe
6.4.Les boucles (for, while, foreach, do) en PHP
6.5.Les tableaux (array) en PHP
6.6.Les fonctions
6.7.Include
6.8.Programmation orientée objet
6.9.Les fonctions de manipulation de tableaux
6.10.Les dates
6.11.Fichiers et répertoires
6.12.Les paramètres d'entrée d'un script PHP
6.13.Utilisation de la librairie graphique
6.14.JpGraph pour tracer courbes et diagrammes
6.15.Utilisation de bases de données avec PHP
6.15.1.Introduction
6.15.2.Utilisation de SQLite
6.15.3.PHP et MySQL (avec MySQLi)
6.15.4.Utilisation de MySQL avec PHP
6.15.5.PDO: PHP Data Objects
6.15.5.1.Introduction
6.15.5.2.Installation
6.15.5.3.Utilisation
6.15.5.4.La connexion et la déconnexion
6.15.5.5.Requête SQL ne retournant pas de résultat (ex: CREATE TABLE, INSERT, UPDATE, etc.)
6.15.5.6.Requête SQL retournant des résultats (ex: SELECT)
6.15.6.Association Objet-Relationnel (ORM) avec Doctrine
6.16.LDAP
6.17.Parser un document XML
6.18.Génération de documents PDF en PHP
6.19.Envoyer un mail
6.20.Créer un webmail avec IMAP
6.21.Droits utilisateurs: chmod 777
6.22.Localization (l10n) et Traduction
7.PHP pour le web
8.Internationalisation (i18n) et encodage en PHP
9.Les débogueurs
10.Programmer en PHP en toute sécurité
11.Bibilothèque PEAR
12.Zend Framework 2 et 3
13.Installation de Zend Framework 2
14.Joomla
15.Composer
16.PHPUnit
17.PHPDocumentor
18.Exemples de scripts PHP
19.Erreurs fréquentes et les solutions
20.Archives
Forum PHP
Version imprimable: imprimer