PHP PDO
L'extension PHP Data Objects (PDO) définit une interface légère et cohérente permettant à PHP d'accéder aux bases de données.
PDO fournit une couche d'abstraction d'accès aux données, ce qui signifie que quelle que soit la base de données que vous utilisez, vous pouvez utiliser les mêmes fonctions (méthodes) pour interroger et récupérer des données.
PDO a été publié avec PHP 5.1 et est également disponible dans l'extension PECL pour PHP 5.0 ; il ne peut pas s'exécuter sur les versions antérieures de PHP.
Installation de PDO
Vous pouvez utiliser la fonction phpinfo() de PHP pour vérifier si l'extension PDO est installée.
Installation de PDO sur les systèmes Unix
Sous Unix ou Linux, vous devez ajouter les extensions suivantes :
extension=pdo.so
Utilisateurs Windows
PDO et tous les principaux pilotes sont distribués avec PHP en tant qu'extensions partagées. Pour les activer, il suffit de modifier le fichier php.ini et d'ajouter les extensions suivantes :
extension=php_pdo.dllEn outre, il existe les extensions de base de données correspondantes suivantes :
;extension=php_pdo_firebird.dll ;extension=php_pdo_informix.dll ;extension=php_pdo_mssql.dll ;extension=php_pdo_mysql.dll ;extension=php_pdo_oci.dll ;extension=php_pdo_oci8.dll ;extension=php_pdo_odbc.dll ;extension=php_pdo_pgsql.dll ;extension=php_pdo_sqlite.dll
Après avoir défini ces configurations, nous devons redémarrer PHP ou le serveur web.
Voyons maintenant un exemple concret. Voici un exemple d'utilisation de PDO pour se connecter à une base de données MySQL :
Exemple
$dbms='mysql'; //type de base de données
$host='localhost'; //nom d'hôte de la base de données
$dbName='test'; //base de données utilisée
$user='root'; //nom d'utilisateur de connexion à la base de données
$pass=''; //mot de passe correspondant
$dsn="$dbms:host=$host;dbname=$dbName";
try {
$dbh = new PDO($dsn, $user, $pass); //initialiser un objet PDO
echo "Connexion réussie<br/>";
/*Vous pouvez également effectuer une opération de recherche
foreach ($dbh->query('SELECT * from FOO') as $row) {
print_r($row); //vous pouvez utiliser echo($GLOBAL); pour voir ces valeurs
}
*/
$dbh = null;
} catch (PDOException $e) {
die ("Error!: " . $e->getMessage() . "<br/>");
}
//Par défaut, ceci n'est pas une connexion persistante. Si vous avez besoin d'une connexion persistante à la base de données, vous devez ajouter un paramètre à la fin : array(PDO::ATTR_PERSISTENT => true) comme ceci :
$db = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));
?>
Très simple. Ensuite, regardons de plus près la documentation spécifique de PHP PDO :
- Constantes prédéfinies
- Gestion des connexions PHP PDO
- Transactions et auto-commit PHP PDO
- Requêtes préparées et procédures stockées PHP PDO
- Erreurs et gestion des erreurs PHP PDO
- Objets volumineux (LOBs) avec PHP PDO
- Classe PDO :
- PDO::beginTransaction— Démarre une transaction
- PDO::commit— Valide une transaction
- PDO::__construct— Crée une instance PDO représentant une connexion à une base de données
- PDO::errorCode— Récupère le SQLSTATE associé à la dernière opération sur le gestionnaire de base de données
- PDO::errorInfo— Retourne le message d'erreur pour la dernière opération sur la base de données
- PDO::exec— Exécute une requête SQL et retourne le nombre de lignes affectées
- PDO::getAttribute— Récupère un attribut d'une connexion à une base de données
- PDO::getAvailableDrivers— Retourne un tableau des pilotes disponibles
- PDO::inTransaction— Vérifie si une transaction est en cours
- PDO::lastInsertId— Retourne l'ID ou la valeur de séquence de la dernière ligne insérée
- PDO::prepare— Prépare une requête SQL à exécuter et retourne un objet PDOStatement
- PDO::query— Exécute une requête SQL, retourne un objet PDOStatement, qui peut être compris comme un jeu de résultats
- PDO::quote— Ajoute des guillemets à une chaîne dans une requête SQL.
- PDO::rollBack— Annule une transaction
- PDO::setAttribute— Définit un attribut
- Classe PDOStatement :
- PDOStatement::bindColumn— Lie une colonne à une variable PHP
- PDOStatement::bindParam— Lie un paramètre à un nom de variable spécifié
- PDOStatement::bindValue— Lie une valeur à un paramètre
- PDOStatement::closeCursor— Ferme le curseur, permettant à la requête d'être exécutée à nouveau.
- PDOStatement::columnCount— Retourne le nombre de colonnes dans le jeu de résultats
- PDOStatement::debugDumpParams— Affiche une commande SQL préparée
- PDOStatement::errorCode— Récupère le SQLSTATE associé à la dernière opération sur le gestionnaire de requête
- PDOStatement::errorInfo— Récupère les informations d'erreur étendues associées à la dernière opération sur le gestionnaire de requête
- PDOStatement::execute— Exécute une requête préparée
- PDOStatement::fetch— Récupère la ligne suivante d'un jeu de résultats
- PDOStatement::fetchAll— Retourne un tableau contenant toutes les lignes du jeu de résultats
- PDOStatement::fetchColumn— Retourne une seule colonne de la ligne suivante du jeu de résultats.
- PDOStatement::fetchObject— Récupère la ligne suivante et la retourne sous forme d'objet.
- PDOStatement::getAttribute— Récupère un attribut de la requête
- PDOStatement::getColumnMeta— Retourne les métadonnées d'une colonne du jeu de résultats
- PDOStatement::nextRowset— Avance au jeu de résultats suivant dans un gestionnaire de requête multi-jeux de résultats
- PDOStatement::rowCount— Retourne le nombre de lignes affectées par la dernière requête SQL
- PDOStatement::setAttribute— Définit un attribut de la requête
- PDOStatement::setFetchMode— Définit le mode de récupération par défaut pour la requête.