0% ont trouvé ce document utile (0 vote)
60 vues5 pages

Guide complet sur PDO en PHP

Transféré par

dioufagm2
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
60 vues5 pages

Guide complet sur PDO en PHP

Transféré par

dioufagm2
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

PDO

Sommaire

 Qu'est-ce que PDO ?


 Quels sont les pilotes de SGBD disponibles avec PDO ?
 Comment installer PDO ?
 Comment savoir quels pilotes sont chargés pour PDO sur mon hébergement ?
 Comment se connecter en utilisant PDO ?
 Comment gérer les exceptions avec PDO ?
 Comment exécuter une requête en utilisant PDO ?
 Comment récupérer le nombre d'enregistrements retournés par une requête 'SELECT' avec
PDO ?

Qu'est-ce que PDO ?

PDO (PHP Data Objects) est une extension PHP qui permet d'utiliser une base de données en
programmant avec un style orienté objet, et surtout qui permet de s'affranchir du SGBD. PDO
n'utilise pas des fonctions au nom trop explicite comme mysql_query() ou sqlite_query(), ce
qui facilite grandement la migration d'un SGBD à l'autre, voire l'utilisation simultanée ou alternée
de plusieurs SGBD avec le même code PHP.

PDO est une solution d'abstraction de BDD en PHP.

Le Zend Framework (par exemple) utilise PDO pour ses accès BDD.

Lien : Comment uniformiser l'utilisation de différents SGBD ?


Lien : Cours et tutoriels Zend Framework
Lien : La documentation de PDO ([Link])

Quels sont les pilotes de SGBD disponibles avec PDO ?

La documentation officielle tient à jour une liste des pilotes disponibles avec PDO. Chaque pilote est
associé à une extension qu'il faut penser à activer dans le fichier [Link] afin de pouvoir l'utiliser.

 Firebird/Interbase 6 ;
 FreeTDS / Microsoft SQL Server / Sybase (à ne pas utiliser, module non tenu à jour par
Microsoft) ;
 IBM DB2 ;
 IBM Informix Dynamic Server ;
 MySQL 3.x, 4.x, 5.x (optimisé pour 4.1 et supérieur) ;
 ODBC v3 (IBM DB2 unixODBC et win32 ODBC) ;
 Oracle Call Interface ;
 PostgreSQL ;
 SQLite 3 et SQLite 2.
Lien : Pilotes PDO ([Link])
Lien : Quels sont les pilotes de SGBD disponibles avec PEAR::MDB2 ?

Comment installer PDO ?


PDO est une extension PHP. Il faut installer le pilote PDO générique ainsi que chacun des pilotes de
SGBD que l'on souhaite utiliser : chacun d'eux est une extension PHP.

Lien : Comment installer une extension pour PHP ?

1
Comment savoir quels pilotes sont chargés pour PDO sur mon
hébergement ?
Il faut utiliser le script suivant :

Sélectionnez
<?php

foreach(get_loaded_extensions() as $extension)
{
if(strpos(strtolower($extension), 'pdo') !== FALSE)
{
echo $extension.'<br/>';
}
}

?>
Créé le 19 juillet 2007 par Guillaume Rossolini

Comment se connecter en utilisant PDO ?

La chaîne de connexion varie suivant le pilote SBGD utilisé, mais tout le reste est équivalent d'un
SGBD à l'autre.

Sélectionnez
<?php

// Connexion à la base de données


$db = new PDO('mysql:host=localhost;dbname=developpez', 'Yogui',
'motdepasse');

// Configuration facultative de la connexion


$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); // les noms de champs
seront en caractères minuscules
$db->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION); // les
erreurs lanceront des exceptions

?>

Voici quelques exemples de chaînes de connexion :

MySQL (TCP)
Sélectionnez
$db = new PDO('mysql:host=localhost;dbname=developpez', 'Yogui',
'motdepasse');
MySQL (socket)
Sélectionnez
$db = new PDO('mysql:unix_socket=/tmp/[Link];dbname=developpez',
'Yogui', 'motdepasse');
ODBC (connexion cataloguée dans le Manager)
Sélectionnez
$db = new PDO('odbc:developpez', 'Yogui', 'motdepasse');

2
ODBC (IBM DB2)
Sélectionnez
$db = new PDO('odbc:DRIVER={IBM DB2 ODBC
DRIVER};HOSTNAME=localhost;PORT=50000;"
."DATABASE=developpez;PROTOCOL=TCPIP;UID=Yogui;PWD=motdepasse;', '', '');
ODBC (MS Access)
Sélectionnez
$db = new PDO('odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\
[Link];Uid=Yogui', '', '');
Oracle
Sélectionnez
$db = new PDO('oci:dbname=//localhost:1521/developpez', 'Yogui',
'motdepasse');
Firebird et Interbase
Sélectionnez
$db = new
PDO('firebird:User=Yogui;Password=motdepasse;Database=[Link];DataSo
urce=localhost;Port=3050', '', '');
IBM DB2
Sélectionnez
$db = new PDO("ibm:DRIVER={IBM DB2 ODBC
DRIVER};DATABASE=developpez;HOSTNAME=localhost;PORT=56789;PROTOCOL=TCPIP;",
"Yogui", "motdepasse");
Informix
Sélectionnez
$db = new PDO("informix:host=localhost; service=9800;
database=developpez; server=ids_server; protocol=onsoctcp;
EnableScrollableCursors=1", "Yogui", "developpez");
PostgreSQL
Sélectionnez
$db = new PDO('pgsql:host=localhost port=5432 dbname=developpez user=Yogui
password=motdepasse', '', '');
SQLite 3
Sélectionnez
$db = new PDO('sqlite:/opt/databases/mydb.sq3', '', '');
SQLite 2
Sélectionnez
$db = new PDO('sqlite2:/opt/databases/mydb.sq2', '', '');
Créé le 10 juillet 2007 par Guillaume Rossolini

Lien : Quels sont les pilotes de SGBD disponibles avec PDO ?


Lien : Comment exécuter une requête en utilisant PDO ?
Lien : Comment construire l'objet $db avec le Zend Framework ?

Comment gérer les exceptions avec PDO ?

3
PDO est une extension orientée objet et qui utilise un système d'exceptions. L'instanciation d'un
objet PDO doit donc se faire avec un bloc try/catch afin d'éviter des fuites d'information (exemple
dans les liens ci-dessous).

Sélectionnez
<?php

try
{
// Connexion à la base de données
$db = new PDO('mysql:host=localhost;dbname=developpez', 'Yogui',
'motdepasse');

// Configuration du pilote : nous voulons des exceptions


$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //
Obligatoire pour la suite
}
catch(Exception $e)
{
echo "Échec : " . $e->getMessage();
}

?>
Créé le 10 juillet 2007 par Guillaume Rossolini

Lien : Tutoriel : Exceptions et PHP5, par Guillaume Affringue

Comment exécuter une requête en utilisant PDO ?

Le plus efficace est d'utiliser les requêtes préparées. Une requête préparée se matérialise dans le
code par un "statement" PDO. Un statement peut être exécuté de nombreuses fois avec des
paramètres différents.

Sélectionnez
<?php

// Connexion à la base de données


$db = new PDO('mysql:host=localhost;dbname=developpez', 'Yogui',
'motdepasse');

// Préparation des requêtes


$truncate = $db->prepare('TRUNCATE user');
$insert = $db->prepare('INSERT INTO user (name, password) VALUES (?, ?)');
$select = $db->prepare('SELECT id, name, password FROM user');
$select->setFetchMode(PDO::FETCH_ASSOC); // Facultatif

// Exécution des requêtes


$truncate->execute();
$insert->execute(array('Yogui', '1234'));
$insert->execute(array('BrYs', '4321'));
$select->execute();

// Récupération des résultats

4
$users = $select->fetchAll();
echo '<pre>';
print_r($users);
echo '</pre>';

?>

Note importante : utiliser des requêtes préparées élimine le risque d'injection SQL et accélère les
performances.

Créé le 17 juin 2007 par Guillaume Rossolini

Lien : Tutoriel : Exceptions et PHP5, par Guillaume Affringue

Comment récupérer le nombre d'enregistrements retournés par une requête

'SELECT' avec PDO ?

Sous réserve que les extension php_pdo et php_pdo_mysql (pour cet exemple) soient montées
en mémoire.

Contrairement à ce que l'on pourrait croire, la méthode 'rowCount()' ne fonctionne que dans les cas
de requêtes de type INSERT, UPDATE ou DELETE.

Sélectionnez
<?php

// initialisation de la connexion PDO


$db = new PDO('mysql:host=localhost;dbname=training', 'eric',
'motdepasse');

// Exécution de la requête
$result = $db->query('SELECT * FROM country');

// Récupération de tous les enregistrements retourne un tableau


$countries = $result->fetchAll();

// Affichage comptage du nombre de lignes du tableau


echo(count($countries));

?>
Créé le 17 juin 2007 par Eric POMMEREAU

Lien : Comment se connecter en utilisant PDO ?

Vous aimerez peut-être aussi