PDO en PHP
PDO en PHP
PDO en PHP
PDO en PHP
1. Définition
L’extension PHP Data Objects, notée PDO, définit une interface d’abstraction pour accéder à une
base de données depuis PHP. PDO fait intervenir le concept de programmation orientée objet.
Remarque
PDO requiert les fonctionnalités orientées objet fournies par PHP5 et ne fonctionne pas
avec les versions antérieures de PHP.
PDO fournit une interface d’abstraction pour l’accès aux données d’une base et non pas une
abstraction de la base de données. (Il n’y a pas une réécriture de SQL).
PDO supporte la plupart de bases de données telles que MySQL, Oracle, PostgreSQL, etc.
2. Gestion de connexion
2.1. Connexion à la base de données
Syntaxe
Avec :
1
«type_de_base:host=machine_qui_héberge_la_base;dbname=nom_de_la_bas
»
avec :
$res = $objet_PDO->query('requete_SQL') ;
Avec :
2
résultat de la requête.
$objet_PDO : désigne l’objet PDO permettant l’accès à la base de données.
requete_SQL : c’est une requête sql.
La fonction query() exécute une requête SQL et retourne un jeu de résultats en tant
qu’objet de type PDOStatement.
Syntaxe
$nb = $objet_PDO->exec('requete_SQL') ;
Avec :
La fonction exec() exécute une requête SQL. Elle est bien adaptée pour les requêtes
autres que Select et retourne le nombre de lignes affectées par la requête.
Syntaxe
$res = $objet_PDO->query('requete_SQL') ;
$res->rowCount() ; //retourne le nombre de lignes
$re->columnCount() ; //retourne le nombre de colonnes
Après avoir exécuté la requête Select par la fonction query(), la fonction fetchAll()
permet de renvoyer un tableau à deux dimensions (ligne, colonne) contenant le résultat.
3
L’accès à ce tableau peut être effectué par les indices ou par les noms des colonnes.
Syntaxe
$res = $objet_PDO->query('requete_SQL') ;
$res->fetchAll() ;
Avec :
Exemple
Syntaxe
Avec:
Avec:
$paramètres_Entrée : Un tableau de valeurs avec autant d’éléments qu’il y a de
paramètres à associer dans la requête SQL qui sera exécutée.
5
5.2.3. La méthode bindParam()
Syntaxe
Avec:
$paramètre : Il s’agit d’un identifiant. Pour une requête préparée utilisant des
marqueurs nommés, ça sera le nom du paramètre sous la forme :name. Pour une
requête préparée utilisant les marqueurs interrogatifs, ce sera la position indexé
-1 du paramètre.
6
$variable : C’est le nom de la variable PHP à lier au paramètre de la requête
SQL.
data_type : désigne le type explicite de données pour le paramètre utilisant la
constante PDO::PARAM_* constants. C’est un paramètre optionnel.
$taille : désigne la longueur du type de données. C’est un paramètre optionnel.
$options_driver : cela désigne les options liées au driver. C’est un paramètre
optionnel.
Exemple
<?php
/* Exécution d’une requête préparée en liant des variables PHP */
$calories = 150;
$couleur = 'rouge';
$sth = $dbh->prepare('SELECT nom, couleur, calories
FROM fruit
WHERE calories < :calories AND couleur = :couleur');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':couleur', $couleur, PDO::PARAM_STR, 12);
$sth->execute();
?>
<?php
/* Exécution d’une requête préparée en liant des variables PHP */
$calories = 150;
$couleur = 'rouge';
$sth = $dbh->prepare('SELECT nom, couleur, calories
FROM fruit
WHERE calories < ? AND couleur = ?');
$sth->bindParam(1, $calories, PDO::PARAM_INT);
$sth->bindParam(2, $couleur, PDO::PARAM_STR, 12);
$sth->execute();
?>
7
6. Gestion des transactions
Une transaction est un ensemble d’actions qui prend la base de données dans un état
cohérent et elle la rend dans un autre état cohérent. Elle donne l’illusion à l’utilisateur
d’être seule à utiliser la base de données. L’exécution d’une transaction se termine par
commit ou abort (rollback) :
Commit : la transaction est réussie, ses mises à jour sont incorporées dans la
BD. On utilise la méthode PDO commit().
Abort : la transaction a échoué, elle n’a aucun effet sur la base de données. On
utilise la méthode PDO rollback().
Remarque
Exemple
<?php
try
{
//on tente d’exécuter les requêtes suivantes dans une
transaction
8
//on lance la transaction
$pdo->beginTransaction();
//Les 3 requêtes à exécuter
$pdo->query('$req1');
$pdo->query('$req2');
$pdo->query('$req3');
//si jusque là tout se passe bien on valide la transaction
$pdo->commit();
}
catch(Exception $e) //en cas d’erreur
{
//on annule la transation
$pdo->rollback();
//on affiche un message d’erreur ainsi que les erreurs
echo 'Erreur d’exécution, voir les erreurs ci-dessous <br/>';
echo 'Erreur : ' . $e->getMessage() . '<br />';
echo 'N° : ' . $e->getCode();
//on arrête l’exécution s’il y a du code après
exit();
}
9
Références
Références
[1] Pauchet A., Technologie Web PHP, 2010, sous licence CC-By-NC,
https://moodle.insa-rouen.fr/mod/resource/view.php?id=5213
[2] Nebra M., Concevez votre site web avec PHP et MySQL, 2012, sous licence CC-
By-NC-SA 2.0, https://openclassrooms.com/courses/concevez-votre-site-web-
avec-php-et-mysql