Les classes PDO
PDO (PHP Data Objects) permet d'interfacer plusieurs SGBDR (MySQL, PostgreSQL, SQLite, Oracle,...).
On peut bien sûr toujours utiliser l'objet mysqli, mais celui-ci est exclusivementréservé à interfacer MySQL!
Donc, si on désire créer une appliaction d'interfaçage indépendante du SGBDR, il faut utiliser des objets permettant d'interfacer tous les autres SGBDR,
les 3 classes PDO le permettent.
PDO comprend 3 classes:
- PDO() permettant de créer des objets représentant la connexion, ces objets disposent des méthodes permettant de réaliser les
fonctions essentielles sur le SGBDR: envois des requêtes, création des requêtes préparées et gestion des transactions
- PDOStatement() pour la réception des résultats des requêtes
- PDOException() pour gérer les erreurs
Se connecter à MySQL avec l'objet PDO
Il faut renseigner 3 paramètres:
- Le Data Source Name (DSN), composé du:
- nom de l'hôte (l'adresse de l'ordinateur où MySQL est installé (comme une adresse IP))
- nom de la base de données
- Le login, c'est le nom sous lequel on se connecte, en local la valeur root
- Le mot de passe, fourni par le serveur d'hébergement, en local la valeur "" (double guillements)
Si nous nous connectons en local sur la base de données "ttsi" nous aurons comme instruction de connection:
Syntaxe
$con = new PDO("mysql:host=localhost;dbname=ttsi;", "root", "");
L'objet retourné ($con dans notre exemple) est affecté par false si la connection n'est pas réalisée.
Pour couper la connection il suffit d'affecter NULL à l'objet $con.
Créer un fichier de connexion et inclure ce fichier
- on crée trois constantes qui représentent nos paramètres de connection
- on passe les constantes en parmètre au constructeur de la classe PDO
- on récupère l'objet $con
Programme
define("MYHOST","mysql:host=localhost;dbname=$base;");
define("MYUSER","root");
define("MYPASS","");
$con = new PDO(MYHOST,MYUSER,MYPASS);
//if($con){echo "ok";}
La méthode include(path) permet d'inclure un fichier, le paramètre est le chemin relatif (path) menant au fichier à inclure.
A la fin on coupe la connexion à MySQL en affectant NULL à la variable contenant la connexion.
Programme
<?php
$base="ttsi";
include("connection.php");
?>
//Le code à exécuter sur la BD
$con=NULL;
Une fonction dédiée à la connection
Cette fonction acceptera deux paramètres, le nom de la base et le chemin vers le fichier contenant les paramètres.
Le fichier de paramètres
Rien de plus simple, on crée n fichiers correspondants aux différentes possiblités de connexions.
Travailler avec 3 constantes est le plus simple.
Programme
<?php
define("MYHOST","mysql:host=localhost;dbname=$base;");
define("MYUSER","root");
define("MYPASS","");
?>
La fonction proprement dite
Pour cette fonction on aura:
- elle reçoit 2 paramètres, le nom de la BD et le chemin du fichier de paramètres choisi
- on charge le fichier de connection coreespondant avec include
- on tente d'établir une connection dans un bloc try et on retourne l'identifiant de connexion
- on récupère une erreur éventuelle dans un bloc catch
Programme
<?php
function fct_connexpdo($base,$param){
include($param.".php");
try{
$con=new PDO(MYHOST,MYUSER,MYPASS);
return $con;
}
catch(PDOException $exept){
echo "Pas de connexion".$except->getMessage();
return FALSE;
}
}
?>
L'appel de la fonction
Dans n'importe quel fichier on peut faire:
Programme
<?php
include("fct_connexpdo.php");
$con=fct_connexpdo("ttsi","param1");
//Le code à exécuter sur la BD
$con=NULL;
?>