PHP
PHP
PDO
PDO
Programmation PHP / PDO
Programmation PHP / PDO 1
1
INTRODUCTION
INTRODUCTION
2
2
Programmation PHP / PDO
Programmation PHP / PDO
PDO
PDO
 PDO :
PDO : P
PHP
HP D
Data
ata O
Objects
bjects
 Extension PHP fournissant une interface pour
Extension PHP fournissant une interface pour
accéder à une base de données
accéder à une base de données
 Fournit une interface d'
Fournit une interface d'abstraction pour l'accès
abstraction pour l'accès
aux données
aux données
 Ne fournit
Ne fournit PAS
PAS une
une abstraction de base de
abstraction de base de
données
données

SQL spécifique au moteur
SQL spécifique au moteur

Fonctionnalités présentes / absentes
Fonctionnalités présentes / absentes
 Interface orientée objet
Interface orientée objet
3
3
Programmation PHP / PDO
Programmation PHP / PDO
Bases de données supportées
Bases de données supportées
4
4
Programmation PHP / PDO
Programmation PHP / PDO
Nom du pilote Bases de données prises en charge
PDO_CUBRID Cubrid
PDO_DBLIB FreeTDS / Microsoft SQL Server / Sybase
PDO_FIREBIRD Firebird
PDO_IBM IBM DB2
PDO_INFORMIX IBM Informix Dynamic Server
PDO_MYSQL MySQL 3.x/4.x/5.x
PDO_OCI Oracle Call Interface
PDO_ODBC ODBC v3 (IBM DB2, unixODBC et win32 ODBC)
PDO_PGSQL PostgreSQL
PDO_SQLITE SQLite 3 et SQLite 2
PDO_SQLSRV Microsoft SQL Server / SQL Azure
PDO_4D 4D
Échanges de données
Échanges de données
Programmation PHP / PDO
Programmation PHP / PDO
Serveur
Serveur
BD
BD
Serveur
Serveur
Web
Web
Requête HTTP
Requête HTTP
1
1
Connexion BD
Connexion BD
3
3
Réponse HTTP
Réponse HTTP
6
6
Affichage résultat
Affichage résultat
7
7
Script PHP
Script PHP
2
2
Requête BD
Requête BD
4
4
Mon PC
Mon PC
BD
BD
Résultat BD
Résultat BD
5
5
5
5
5
5
COMMENT SE CONNECTER ?
COMMENT SE CONNECTER ?
6
6
Programmation PHP / PDO
Programmation PHP / PDO
Connexions et gestionnaire de connexion
Connexions et gestionnaire de connexion
 Instanciation d'un objet
Instanciation d'un objet PDO
PDO
 $dbh=new
$dbh=new PDO
PDO(
(DSN
DSN [,
[, user
user [,
[, pass
pass [,
[, options
options]]]);
]]]);
 DSN
DSN :
: D
Data
ata S
Source
ource N
Name
ame

nom_du_driver:syntaxe_spécifique_au_driver
nom_du_driver:syntaxe_spécifique_au_driver

Ex :
Ex : mysql:host=localhost;dbname=ma_base
mysql:host=localhost;dbname=ma_base
 user
user : nom d'utilisateur,
: nom d'utilisateur, pass
pass : mot de passe
: mot de passe
 options
options : tableau associatif
: tableau associatif

spécifiques au driver
spécifiques au driver

Ex : array(PDO::ATTR_PERSISTENT => true)) ;
Ex : array(PDO::ATTR_PERSISTENT => true)) ;
 Fin de connexion : $dbh=null ; ou unset($dbh) ;
Fin de connexion : $dbh=null ; ou unset($dbh) ;
7
7
Programmation PHP / PDO
Programmation PHP / PDO
Gestion des erreurs de connexion
Gestion des erreurs de connexion
<?php
<?php
try
try {
{
$
$dbh
dbh =
= new
new PDO
PDO(
('
'mysql:host=h;dbname=db
mysql:host=h;dbname=db',
',
$
$user
user,
, $
$pass
pass)
) ;
;
…
…
$
$dbh
dbh =
= null
null ;
;
}
}
catch
catch (
(PDOException
PDOException $
$e
e)
) {
{
echo
echo "
"<p>Erreur:
<p>Erreur: "
".$
.$e
e->
->getMessage
getMessage()
() ;
;
die
die()
() ;
;
}
}
?>
?>
8
8
Programmation PHP / PDO
Programmation PHP / PDO
EFFECTUER UNE REQUÊTE
EFFECTUER UNE REQUÊTE
9
9
Programmation PHP / PDO
Programmation PHP / PDO
Exécution d'une requête
Exécution d'une requête
 PDOStatement
PDOStatement PDO::query
PDO::query (
( string
string statement
statement )
)
<?php
<?php
try
try {
{
$
$pdo
pdo =
= new
new PDO
PDO(
("
"mysql:host=localhost
mysql:host=localhost"
")
) ;
;
$
$pdostat
pdostat =
= $
$pdo
pdo->
->query
query(
("
"SELECT * FROM clients
SELECT * FROM clients"
")
) ;
;
}
}
catch
catch (
(Exception
Exception $
$e
e)
) {
{
echo
echo "
"<p>ERREUR :
<p>ERREUR : "
".$
.$e
e->
->getMessage
getMessage()
() ;
;
}
}
10
10
Programmation PHP / PDO
Programmation PHP / PDO
Requête
Requête
Résultat de requête
Résultat de requête
Exploitation des résultats d'une requête
Exploitation des résultats d'une requête
 Récupération des données ligne à ligne
Récupération des données ligne à ligne
 Une ligne peut être :
Une ligne peut être :

un tableau indexé
un tableau indexé

un tableau associatif
un tableau associatif

un tableau mixte (par défaut)
un tableau mixte (par défaut)

un objet anonyme
un objet anonyme

un objet d'une classe définie par l'utilisateur
un objet d'une classe définie par l'utilisateur
 Récupération des données d'une colonne
Récupération des données d'une colonne
11
11
Programmation PHP / PDO
Programmation PHP / PDO
Parcours du résultat d'une requête
Parcours du résultat d'une requête
 Parcourir le résultat de la requête
Parcourir le résultat de la requête
12
12
Programmation PHP / PDO
Programmation PHP / PDO
+--------+------------------------------------+
+--------+------------------------------------+
| mor_id | mor_nom |
| mor_id | mor_nom |
+--------+------------------------------------+
+--------+------------------------------------+
| 872 | With A Little Help From My Friends |
| 872 | With A Little Help From My Friends |
| 873 | The Letter |
| 873 | The Letter |
| 874 | Marjorine |
| 874 | Marjorine |
| 875 | Midnight Rider |
| 875 | Midnight Rider |
| 876 | You Are So Beautiful |
| 876 | You Are So Beautiful |
| 877 | Feelin' Allright |
| 877 | Feelin' Allright |
| 878 | Cry Me A River |
| 878 | Cry Me A River |
...
...
SELECT *
SELECT *
FROM morceau
FROM morceau
ORDER BY mor_id
ORDER BY mor_id
Résultat de requête
Résultat de requête
Curseur interne
Curseur interne
Exploitation des résultats d'une requête (1)
Exploitation des résultats d'une requête (1)
try
try {
{
$
$pdo
pdo=
=new
new PDO
PDO(
("
"mysql:host=localhost;dbname=mysql
mysql:host=localhost;dbname=mysql"
")
) ;
;
$
$pdo
pdo->
->setAttribute
setAttribute(
(PDO
PDO::
::ATTR_ERRMODE,
ATTR_ERRMODE,
PDO
PDO::
::ERRMODE_EXCEPTION
ERRMODE_EXCEPTION)
);
;
$
$pdostat
pdostat =
= $
$pdo
pdo->
->query
query(
("
"SELECT name FROM user
SELECT name FROM user"
")
) ;
;
$
$pdostat
pdostat->
->setFetchMode
setFetchMode(
(PDO
PDO::
::FETCH_ASSOC
FETCH_ASSOC)
) ;
;
foreach
foreach (
($
$pdostat
pdostat as
as $
$ligne
ligne)
) {
{
echo
echo "
"<p>
<p>"
" . $
. $ligne
ligne[
['
'name
name'
']
] .
. "
"n
n"
" ;
;
}
}
}
}
catch
catch (
(Exception
Exception $
$e
e)
) {
{
echo
echo "
"<p>ERREUR :
<p>ERREUR : "
".$
.$e
e->
->getMessage
getMessage()
() ;
;
}
}
13
13
Programmation PHP / PDO
Programmation PHP / PDO
Exploitation des résultats d'une requête (2)
Exploitation des résultats d'une requête (2)
try
try {
{
$
$pdo
pdo=
=new
new PDO
PDO(
("
"mysql:host=localhost;dbname=mysql
mysql:host=localhost;dbname=mysql"
")
) ;
;
$
$pdo
pdo->
->setAttribute
setAttribute(
(PDO
PDO::
::ATTR_ERRMODE,
ATTR_ERRMODE,
PDO
PDO::
::ERRMODE_EXCEPTION
ERRMODE_EXCEPTION)
);
;
$
$pdostat
pdostat =
= $
$pdo
pdo->
->query
query(
("
"SELECT name FROM user
SELECT name FROM user"
")
) ;
;
foreach
foreach (
($
$pdostat
pdostat->
->fetchAll
fetchAll(
(PDO
PDO::
::FETCH_ASSOC
FETCH_ASSOC)
)
as
as $
$ligne
ligne)
) {
{
echo
echo "
"<p>
<p>"
" . $
. $ligne
ligne[
['
'name
name'
']
] .
. "
"n
n"
" ;
;
}
}
}
}
catch
catch (
(Exception
Exception $
$e
e)
) {
{
echo
echo "
"<p>ERREUR :
<p>ERREUR : "
".$
.$e
e->
->getMessage
getMessage()
() ;
;
}
}
14
14
Programmation PHP / PDO
Programmation PHP / PDO
Exploitation des résultats d'une requête (3)
Exploitation des résultats d'une requête (3)
try
try {
{
$
$pdo
pdo=
=new
new PDO
PDO(
("
"mysql:host=localhost;dbname=mysql
mysql:host=localhost;dbname=mysql"
")
) ;
;
$
$pdo
pdo->
->setAttribute
setAttribute(
(PDO
PDO::
::ATTR_ERRMODE,
ATTR_ERRMODE,
PDO
PDO::
::ERRMODE_EXCEPTION
ERRMODE_EXCEPTION)
);
;
$
$pdostat
pdostat =
= $
$pdo
pdo->
->query
query(
("
"SELECT name FROM user
SELECT name FROM user"
")
) ;
;
while
while (
($
$ligne
ligne
= $
= $pdostat
pdostat->
->fetch
fetch(
(PDO
PDO::
::FETCH_ASSOC
FETCH_ASSOC))
)) {
{
echo
echo "
"<p>
<p>"
" . $
. $ligne
ligne[
['
'name
name'
']
] .
. "
"n
n"
" ;
;
}
}
}
}
catch
catch (
(Exception
Exception $
$e
e)
) {
{
echo
echo "
"<p>ERREUR :
<p>ERREUR : "
".$
.$e
e->
->getMessage
getMessage()
() ;
;
}
}
15
15
Programmation PHP / PDO
Programmation PHP / PDO
Modes de récupération des données (1)
Modes de récupération des données (1)
 PDO::FETCH_ASSOC
PDO::FETCH_ASSOC

retourner
retourner chaque ligne
chaque ligne dans un
dans un tableau indexé par les
tableau indexé par les
noms des colonnes
noms des colonnes comme elles sont retournées
comme elles sont retournées
dans le jeu de résultats correspondant. Si le jeu de
dans le jeu de résultats correspondant. Si le jeu de
résultats contient
résultats contient de multiples colonnes avec le même
de multiples colonnes avec le même
nom
nom, PDO::FETCH_ASSOC retourne
, PDO::FETCH_ASSOC retourne une seule
une seule
valeur par nom de colonne
valeur par nom de colonne.
.
 PDO::FETCH_NUM
PDO::FETCH_NUM

retourner
retourner chaque ligne
chaque ligne dans un
dans un tableau indexé par le
tableau indexé par le
numéro des colonnes
numéro des colonnes comme elles sont retournées
comme elles sont retournées
dans le jeu de résultats correspondant, en
dans le jeu de résultats correspondant, en
commençant à 0
commençant à 0.
.
16
16
Programmation PHP / PDO
Programmation PHP / PDO
Modes de récupération des données (2)
Modes de récupération des données (2)
 PDO::FETCH_OBJ
PDO::FETCH_OBJ

retourner
retourner chaque ligne
chaque ligne dans un
dans un objet avec les noms
objet avec les noms
de propriétés correspondant aux noms des colonnes
de propriétés correspondant aux noms des colonnes
comme elles sont retournées dans le jeu de résultats.
comme elles sont retournées dans le jeu de résultats.
 PDO::FETCH_CLASS |
PDO::FETCH_CLASS |
PDO::FETCH_CLASSTYPE
PDO::FETCH_CLASSTYPE

retourner une nouvelle
retourner une nouvelle instance de la classe
instance de la classe
demandée
demandée, liant les colonnes aux propriétés
, liant les colonnes aux propriétés
nommées dans la classe.
nommées dans la classe.
Nom de la classe = 1ère colonne
Nom de la classe = 1ère colonne.
.
17
17
Programmation PHP / PDO
Programmation PHP / PDO
Exemple avec PDO::FETCH_CLASS
Exemple avec PDO::FETCH_CLASS
$
$stmt
stmt =
= $
$pdo
pdo->
->query
query(
("
"SELECT
SELECT id, name
id, name FROM
FROM artist
artist
WHERE
WHERE id = 12"
id = 12")
) ;
;
$
$stmt
stmt->
->setFetchMode
setFetchMode(
(PDO
PDO::
::FETCH_CLASS, '
FETCH_CLASS, 'Artist
Artist'
')
) ;
;
if
if ((
(($
$object
object =
= $
$stmt
stmt->
->fetch
fetch())
()) !==
!== false
false)
) {
{
return
return $
$object
object ;
;
}
}
18
18
Programmation PHP / PDO
Programmation PHP / PDO
Instancie un objet de la classe
Instancie un objet de la classe
Artist
Artist
dont les attributs sont supposés
dont les attributs sont supposés
être
être id
id et
et name
name

Petit Aide-mémoire pour la programmation PHP .ppt

  • 1.
    PHP PHP PDO PDO Programmation PHP /PDO Programmation PHP / PDO 1 1
  • 2.
  • 3.
    PDO PDO  PDO : PDO: P PHP HP D Data ata O Objects bjects  Extension PHP fournissant une interface pour Extension PHP fournissant une interface pour accéder à une base de données accéder à une base de données  Fournit une interface d' Fournit une interface d'abstraction pour l'accès abstraction pour l'accès aux données aux données  Ne fournit Ne fournit PAS PAS une une abstraction de base de abstraction de base de données données  SQL spécifique au moteur SQL spécifique au moteur  Fonctionnalités présentes / absentes Fonctionnalités présentes / absentes  Interface orientée objet Interface orientée objet 3 3 Programmation PHP / PDO Programmation PHP / PDO
  • 4.
    Bases de donnéessupportées Bases de données supportées 4 4 Programmation PHP / PDO Programmation PHP / PDO Nom du pilote Bases de données prises en charge PDO_CUBRID Cubrid PDO_DBLIB FreeTDS / Microsoft SQL Server / Sybase PDO_FIREBIRD Firebird PDO_IBM IBM DB2 PDO_INFORMIX IBM Informix Dynamic Server PDO_MYSQL MySQL 3.x/4.x/5.x PDO_OCI Oracle Call Interface PDO_ODBC ODBC v3 (IBM DB2, unixODBC et win32 ODBC) PDO_PGSQL PostgreSQL PDO_SQLITE SQLite 3 et SQLite 2 PDO_SQLSRV Microsoft SQL Server / SQL Azure PDO_4D 4D
  • 5.
    Échanges de données Échangesde données Programmation PHP / PDO Programmation PHP / PDO Serveur Serveur BD BD Serveur Serveur Web Web Requête HTTP Requête HTTP 1 1 Connexion BD Connexion BD 3 3 Réponse HTTP Réponse HTTP 6 6 Affichage résultat Affichage résultat 7 7 Script PHP Script PHP 2 2 Requête BD Requête BD 4 4 Mon PC Mon PC BD BD Résultat BD Résultat BD 5 5 5 5 5 5
  • 6.
    COMMENT SE CONNECTER? COMMENT SE CONNECTER ? 6 6 Programmation PHP / PDO Programmation PHP / PDO
  • 7.
    Connexions et gestionnairede connexion Connexions et gestionnaire de connexion  Instanciation d'un objet Instanciation d'un objet PDO PDO  $dbh=new $dbh=new PDO PDO( (DSN DSN [, [, user user [, [, pass pass [, [, options options]]]); ]]]);  DSN DSN : : D Data ata S Source ource N Name ame  nom_du_driver:syntaxe_spécifique_au_driver nom_du_driver:syntaxe_spécifique_au_driver  Ex : Ex : mysql:host=localhost;dbname=ma_base mysql:host=localhost;dbname=ma_base  user user : nom d'utilisateur, : nom d'utilisateur, pass pass : mot de passe : mot de passe  options options : tableau associatif : tableau associatif  spécifiques au driver spécifiques au driver  Ex : array(PDO::ATTR_PERSISTENT => true)) ; Ex : array(PDO::ATTR_PERSISTENT => true)) ;  Fin de connexion : $dbh=null ; ou unset($dbh) ; Fin de connexion : $dbh=null ; ou unset($dbh) ; 7 7 Programmation PHP / PDO Programmation PHP / PDO
  • 8.
    Gestion des erreursde connexion Gestion des erreurs de connexion <?php <?php try try { { $ $dbh dbh = = new new PDO PDO( (' 'mysql:host=h;dbname=db mysql:host=h;dbname=db', ', $ $user user, , $ $pass pass) ) ; ; … … $ $dbh dbh = = null null ; ; } } catch catch ( (PDOException PDOException $ $e e) ) { { echo echo " "<p>Erreur: <p>Erreur: " ".$ .$e e-> ->getMessage getMessage() () ; ; die die() () ; ; } } ?> ?> 8 8 Programmation PHP / PDO Programmation PHP / PDO
  • 9.
    EFFECTUER UNE REQUÊTE EFFECTUERUNE REQUÊTE 9 9 Programmation PHP / PDO Programmation PHP / PDO
  • 10.
    Exécution d'une requête Exécutiond'une requête  PDOStatement PDOStatement PDO::query PDO::query ( ( string string statement statement ) ) <?php <?php try try { { $ $pdo pdo = = new new PDO PDO( (" "mysql:host=localhost mysql:host=localhost" ") ) ; ; $ $pdostat pdostat = = $ $pdo pdo-> ->query query( (" "SELECT * FROM clients SELECT * FROM clients" ") ) ; ; } } catch catch ( (Exception Exception $ $e e) ) { { echo echo " "<p>ERREUR : <p>ERREUR : " ".$ .$e e-> ->getMessage getMessage() () ; ; } } 10 10 Programmation PHP / PDO Programmation PHP / PDO Requête Requête Résultat de requête Résultat de requête
  • 11.
    Exploitation des résultatsd'une requête Exploitation des résultats d'une requête  Récupération des données ligne à ligne Récupération des données ligne à ligne  Une ligne peut être : Une ligne peut être :  un tableau indexé un tableau indexé  un tableau associatif un tableau associatif  un tableau mixte (par défaut) un tableau mixte (par défaut)  un objet anonyme un objet anonyme  un objet d'une classe définie par l'utilisateur un objet d'une classe définie par l'utilisateur  Récupération des données d'une colonne Récupération des données d'une colonne 11 11 Programmation PHP / PDO Programmation PHP / PDO
  • 12.
    Parcours du résultatd'une requête Parcours du résultat d'une requête  Parcourir le résultat de la requête Parcourir le résultat de la requête 12 12 Programmation PHP / PDO Programmation PHP / PDO +--------+------------------------------------+ +--------+------------------------------------+ | mor_id | mor_nom | | mor_id | mor_nom | +--------+------------------------------------+ +--------+------------------------------------+ | 872 | With A Little Help From My Friends | | 872 | With A Little Help From My Friends | | 873 | The Letter | | 873 | The Letter | | 874 | Marjorine | | 874 | Marjorine | | 875 | Midnight Rider | | 875 | Midnight Rider | | 876 | You Are So Beautiful | | 876 | You Are So Beautiful | | 877 | Feelin' Allright | | 877 | Feelin' Allright | | 878 | Cry Me A River | | 878 | Cry Me A River | ... ... SELECT * SELECT * FROM morceau FROM morceau ORDER BY mor_id ORDER BY mor_id Résultat de requête Résultat de requête Curseur interne Curseur interne
  • 13.
    Exploitation des résultatsd'une requête (1) Exploitation des résultats d'une requête (1) try try { { $ $pdo pdo= =new new PDO PDO( (" "mysql:host=localhost;dbname=mysql mysql:host=localhost;dbname=mysql" ") ) ; ; $ $pdo pdo-> ->setAttribute setAttribute( (PDO PDO:: ::ATTR_ERRMODE, ATTR_ERRMODE, PDO PDO:: ::ERRMODE_EXCEPTION ERRMODE_EXCEPTION) ); ; $ $pdostat pdostat = = $ $pdo pdo-> ->query query( (" "SELECT name FROM user SELECT name FROM user" ") ) ; ; $ $pdostat pdostat-> ->setFetchMode setFetchMode( (PDO PDO:: ::FETCH_ASSOC FETCH_ASSOC) ) ; ; foreach foreach ( ($ $pdostat pdostat as as $ $ligne ligne) ) { { echo echo " "<p> <p>" " . $ . $ligne ligne[ [' 'name name' '] ] . . " "n n" " ; ; } } } } catch catch ( (Exception Exception $ $e e) ) { { echo echo " "<p>ERREUR : <p>ERREUR : " ".$ .$e e-> ->getMessage getMessage() () ; ; } } 13 13 Programmation PHP / PDO Programmation PHP / PDO
  • 14.
    Exploitation des résultatsd'une requête (2) Exploitation des résultats d'une requête (2) try try { { $ $pdo pdo= =new new PDO PDO( (" "mysql:host=localhost;dbname=mysql mysql:host=localhost;dbname=mysql" ") ) ; ; $ $pdo pdo-> ->setAttribute setAttribute( (PDO PDO:: ::ATTR_ERRMODE, ATTR_ERRMODE, PDO PDO:: ::ERRMODE_EXCEPTION ERRMODE_EXCEPTION) ); ; $ $pdostat pdostat = = $ $pdo pdo-> ->query query( (" "SELECT name FROM user SELECT name FROM user" ") ) ; ; foreach foreach ( ($ $pdostat pdostat-> ->fetchAll fetchAll( (PDO PDO:: ::FETCH_ASSOC FETCH_ASSOC) ) as as $ $ligne ligne) ) { { echo echo " "<p> <p>" " . $ . $ligne ligne[ [' 'name name' '] ] . . " "n n" " ; ; } } } } catch catch ( (Exception Exception $ $e e) ) { { echo echo " "<p>ERREUR : <p>ERREUR : " ".$ .$e e-> ->getMessage getMessage() () ; ; } } 14 14 Programmation PHP / PDO Programmation PHP / PDO
  • 15.
    Exploitation des résultatsd'une requête (3) Exploitation des résultats d'une requête (3) try try { { $ $pdo pdo= =new new PDO PDO( (" "mysql:host=localhost;dbname=mysql mysql:host=localhost;dbname=mysql" ") ) ; ; $ $pdo pdo-> ->setAttribute setAttribute( (PDO PDO:: ::ATTR_ERRMODE, ATTR_ERRMODE, PDO PDO:: ::ERRMODE_EXCEPTION ERRMODE_EXCEPTION) ); ; $ $pdostat pdostat = = $ $pdo pdo-> ->query query( (" "SELECT name FROM user SELECT name FROM user" ") ) ; ; while while ( ($ $ligne ligne = $ = $pdostat pdostat-> ->fetch fetch( (PDO PDO:: ::FETCH_ASSOC FETCH_ASSOC)) )) { { echo echo " "<p> <p>" " . $ . $ligne ligne[ [' 'name name' '] ] . . " "n n" " ; ; } } } } catch catch ( (Exception Exception $ $e e) ) { { echo echo " "<p>ERREUR : <p>ERREUR : " ".$ .$e e-> ->getMessage getMessage() () ; ; } } 15 15 Programmation PHP / PDO Programmation PHP / PDO
  • 16.
    Modes de récupérationdes données (1) Modes de récupération des données (1)  PDO::FETCH_ASSOC PDO::FETCH_ASSOC  retourner retourner chaque ligne chaque ligne dans un dans un tableau indexé par les tableau indexé par les noms des colonnes noms des colonnes comme elles sont retournées comme elles sont retournées dans le jeu de résultats correspondant. Si le jeu de dans le jeu de résultats correspondant. Si le jeu de résultats contient résultats contient de multiples colonnes avec le même de multiples colonnes avec le même nom nom, PDO::FETCH_ASSOC retourne , PDO::FETCH_ASSOC retourne une seule une seule valeur par nom de colonne valeur par nom de colonne. .  PDO::FETCH_NUM PDO::FETCH_NUM  retourner retourner chaque ligne chaque ligne dans un dans un tableau indexé par le tableau indexé par le numéro des colonnes numéro des colonnes comme elles sont retournées comme elles sont retournées dans le jeu de résultats correspondant, en dans le jeu de résultats correspondant, en commençant à 0 commençant à 0. . 16 16 Programmation PHP / PDO Programmation PHP / PDO
  • 17.
    Modes de récupérationdes données (2) Modes de récupération des données (2)  PDO::FETCH_OBJ PDO::FETCH_OBJ  retourner retourner chaque ligne chaque ligne dans un dans un objet avec les noms objet avec les noms de propriétés correspondant aux noms des colonnes de propriétés correspondant aux noms des colonnes comme elles sont retournées dans le jeu de résultats. comme elles sont retournées dans le jeu de résultats.  PDO::FETCH_CLASS | PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE PDO::FETCH_CLASSTYPE  retourner une nouvelle retourner une nouvelle instance de la classe instance de la classe demandée demandée, liant les colonnes aux propriétés , liant les colonnes aux propriétés nommées dans la classe. nommées dans la classe. Nom de la classe = 1ère colonne Nom de la classe = 1ère colonne. . 17 17 Programmation PHP / PDO Programmation PHP / PDO
  • 18.
    Exemple avec PDO::FETCH_CLASS Exempleavec PDO::FETCH_CLASS $ $stmt stmt = = $ $pdo pdo-> ->query query( (" "SELECT SELECT id, name id, name FROM FROM artist artist WHERE WHERE id = 12" id = 12") ) ; ; $ $stmt stmt-> ->setFetchMode setFetchMode( (PDO PDO:: ::FETCH_CLASS, ' FETCH_CLASS, 'Artist Artist' ') ) ; ; if if (( (($ $object object = = $ $stmt stmt-> ->fetch fetch()) ()) !== !== false false) ) { { return return $ $object object ; ; } } 18 18 Programmation PHP / PDO Programmation PHP / PDO Instancie un objet de la classe Instancie un objet de la classe Artist Artist dont les attributs sont supposés dont les attributs sont supposés être être id id et et name name