Académique Documents
Professionnel Documents
Culture Documents
L’interface PDO
Introduction
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
}