Vous êtes sur la page 1sur 16

Apprentissage & Pratique

PHP

Utiliser une base de données


avec PHP : PDO, etc.

Par
El hassan Abdelwahed
Département d’Informatique
Faculté des Sciences Semlalia Marrakech
Architecture générale

Poste Client Appel de la page


Html
CSS
Serveur Web
Requête(s) Réponse(s)
Exécution du script

PHP

Serveur applications

Extraction des données

SGBD

Serveur Données

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 2


Gestion des commandes: Création de la BD

Création de la base de données dans le SGBD MySQL avec phpMyAdmin

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 3


PHP & BD: Pilotes Natifs (PHP4)

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 4


PHP & BD: Pilotes Natifs (PHP4)

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 5


Utiliser les Bases de données avec PHP

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 6


PHP < PDO > SGBD
PHP

PDO (PHP Data Object)

Autres Php_pdo_pgsql php_pdo_mysql php_pdo_oci php_pdo_sqlsrv


SGBD

Il faut utiliser un driver PDO


spécifique au SGBD utilisé
(activation de l’extension
correspondante)

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 7


PHP < PDO > SGBD

- PDO constitue une couche d'abstraction entre le serveur d'application et le serveur de


base de données

- L’approche objet de PDO permet de plus d’étendre les fonctions d’accès au SGBD
facilement et de manière transparente

- La classe PDO permet d'utiliser une syntaxe uniforme dans l'utilisation des fonctions et
méthodes d'accès aux différents types des bases de données,

- L’usage de la classe PDO offre l’avantage de la portabilité, de la facilité d’utilisation, de la


sécurité que de la rapidité.

- La classe PDO gère: les exceptions, les transactions, les requêtes préparées, … etc.
PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 8
Structures des classe de PDO

La classe PDO : correspond au lien à la base de


données, elle dispose des méthodes
permettant de réaliser les fonctions
essentielles, à savoir l’envoi de requête, la
création de requêtes préparées, la gestion des
transactions, … etc.

La classe PDOStatement : correspond aux


requêtes qu’on peut faire, Ses méthodes
permettent de gérer les requêtes préparées et
de lire les résultats des requêtes

La classe PDOException: permet de traiter les


erreurs.

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 9


Connexion à la BD

- Les connexions sont établies en créant des instances de la classe PDO.

- Le constructeur de la classe PDO accepte des paramètres pour spécifier la DNS


de la base de données et les paramètres nécessaires à la connexion (nom
d'utilisateur, mot de passe, etc.)

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 10


Gestion des erreurs

La classe PDO offre trois modes pour la gestion des erreurs:

- PDO::ERRMODE_SILENT: C'est le mode par défaut. PDO définit simplement le code


d'erreur à inspecter grâce aux méthodes PDO::errorCode() et PDO::errorInfo() sur les objets
représentant les requêtes, mais aussi ceux représentant les bases de données .

- PDO::ERRMODE_WARNING: Cette configuration est utile lors des tests et du


débogage, si on veut voir le problème sans interrompre l'application.

- PDO::ERRMODE_EXCEPTION: En plus de définir le code d'erreur, PDO lancera une


exception PDOException .

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 11


Requêtes SQL & Méthodes à utiliser

- La méthode exec( ) de la classe PDO est à utiliser principalement pour des requêtes
SQL (insertion, modification) : INSERT, UPDATE, DELETE
La méthode exec( ) retourne le nombre d’enregistrements modifiés.

- La méthode query( ) de la classe PDO est à utiliser principalement pour des


requêtes SQL (selection) : SELECT, EXPLAIN, SHOW, DESC
La méthode query( ) retourne, dans un objet de la classe PDOStatment, l’ensemble
des enregistrements sélectionnés.

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 12


Sécurité & Échappement

La méthode quote() de la classe PDO permet d’effectuer les opérations


d’échappement des chaînes de caractères et la formate de façon à pouvoir
l’utiliser directement dans une requête SQL (les caractères spéciaux sont
échappés, etc.): faille par injection SQL, … etc.

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 13


Requêtes préparées

- Les requêtes préparées sont une sorte de modèle compilé pour le SQL qu’on veut exécuter
- Elles peuvent être personnalisées en utilisant des variables en guise de paramètres.
- La requête ne doit être analysée (ou préparée) qu'une seule fois, mais peut être exécutée
plusieurs fois avec des paramètres identiques ou différents.
- Les requêtes préparées permettent de créer des requêtes SQL qui contiennent des
paramètres auxquels on peut donner des valeurs différentes en fonction des besoins.
- Les paramètres pour préparer les requêtes n'ont pas besoin d'être entre guillemets ; le driver
le gère pour vous (élimine les risques liés aux injections SQL)
- PDO émule les requêtes préparées si votre SGBD ne dispose pas de cette fonctionalité.

- Avantages: Impose une certaine rigueur de programmation; Optimisation du temps


d'exécutions requis pour les requêtes; Exécutées plus d'une fois; Plus grande sécurité au
niveau des requêtes; … etc.

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 14


Requêtes préparées: Typage des arguements

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 15


Transactions

PHP & Bases de données El Hassan Abdelwahed, FSSM, UCAM 16

Vous aimerez peut-être aussi