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
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
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
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