Vous êtes sur la page 1sur 9

Interface PHP-MySQL

L’interface PDO
Introduction

 L’utilisation de l’interface mysql est devenue obsolète (déconseillée) dans les


nouvelles versions de PHP. Il est donc préférable d’utiliser l’interface PDO pour
vos connexions à un SGBD à partir de PHP.
 La connexion à la base de données en utilisant l’interface PDO est devenue plus
facile. La connexion, l’authentification et la sélection d’une base de données
sont réalisées en une seule instruction :
 $db = new PDO('mysql:host=localhost;dbname=test', 'username',
'password');
 Pour se connecter à une base de données Oracle par exemple, il suffit de faire :
 $db = new PDO('oci:dbname=testdb;charset=utf8', 'username',
'password');
Requête avec PDO
 Pour exécuter une requête et traiter les erreurs possibles :
try {
$stmt=$db->query('SELECT * FROM maTable'); //requête SQL
$Result=$stmt->fetchAll(PDO::FETCH_ASSOC); //Récupération des
résultats
$row_count = $stmt->rowCount();//nombre de lignes affectées
}
catch(PDOException $ex) {
echo "Une erreur est survenue!"; //message pour l'utilisateur
some_logging_function($ex->getMessage());//message du Serveur
}
Les Requêtes Préparées
 Une requête préparée est une requête précompilée qui nécessite un ou
plusieurs paramètres pour s’exécuter.
 Préparer les requêtes est particulièrement utile si on veut exécuter une
requête plusieurs fois avec des paramètres différents à chaque fois.
 Il existe différentes façons de préparer une requête avec l’interface PDO.
 PDO accepte deux types de marqueurs de paramètres :
➢ Les paramètres nommés avec :nom_du_param
➢ Le point d’interrogation ?

 Il faut choisir l’un des deux paramètres car ils ne peuvent pas être mélangés.
Les Requêtes Préparées
1er Cas
$Age = 36;
$Prenom = 'Rachid';
/*** préparer la requête SQL ***/
$stmt = $db->prepare("SELECT * FROM Employers WHERE Age =
:e_age AND prenom = :e_prenom");
/*** lier les paramètres ***/
$stmt->bindParam(':e_age', $Age, PDO::PARAM_INT);
$stmt->bindParam(':e_prenom', $Prenom, PDO::PARAM_STR, 5);
/*** exécuter la requête préparée ***/
$stmt->execute();
/*** récupérer les résultats ***/
$result = $stmt->fetchAll();
Les Requêtes Préparées
2ème Cas
$Age = 36;
$Prenom = 'Rachid';
/*** préparer la requête SQL ***/
$stmt = $db->prepare("SELECT * FROM Employees WHERE Age = ?
AND prenom = ?");
/*** lier les paramètres ***/
$stmt->bindParam(1, $Age);
$stmt->bindParam(2, $Prenom);
/*** exécuter la requête préparée ***/
$stmt->execute();
/*** récupérer les résultats ***/
$result = $stmt->fetchAll();
Les Requêtes Préparées
Comparaison
$Age = 36;
$Prenom = 'Rachid';
/*** préparer la requête SQL ***/
$stmt = $db->prepare("SELECT *
FROM Employers WHERE Age = :e_age $stmt = $db->prepare("SELECT *
AND prenom = :e_prenom"); FROM Employees WHERE Age = ? AND
/*** lier les paramètres ***/ prenom = ?");
$stmt->bindParam(':e_age', $Age, /*** lier les paramètres ***/
PDO::PARAM_INT); $stmt->bindParam(1, $Age);
$stmt->bindParam(':e_prenom', $stmt->bindParam(2, $Prenom);
$Prenom, PDO::PARAM_STR, 5);
/*** exécuter la requête préparée ***/
$stmt->execute();
/*** récupérer les résultats ***/
$result = $stmt->fetchAll();
Les Requêtes Préparées
Exemple
 Voici un exemple avec la base catalog.
Les Transactions
 L’interface PDO permet de gérer les transactions SQL.
 Pour ce faire, l’objet PDO contient des fonctions pour lancer, valider et annuler
une transaction.
try {
/*** lancer la transaction ***/
$db->beginTransaction();
/* Requêtes SQL
- SELECT/INSERT/UPDATE/... */
$db->commit(); // valider la transaction **
}
catch(PDOException $e) {
$db->rollback(); // annuler la transaction en cas d'échec
echo $e->getMessage(); // message d'erreur
}

Vous aimerez peut-être aussi