PHP et bases de données avec PDO
PHP et bases de données (PDO) est un cours de niveau intermédiaire de 5 leçons (environ 3 h), avec 15 exercices et 15 questions de quiz. Prérequis : PHP orienté objet et Composer, SQL intermédiaire (jointures, sous-requêtes). Le cours demande un environnement de projet complet, prévu dans une phase ultérieure de la plateforme.
- PHP
- Intermédiaire
- 5 leçons
- 3 h
- 15 exercices
- Environnement de projet complet (phase 2)
Le cours en bref
Ce cours vous apprend à faire dialoguer une application PHP avec une base de données relationnelle grâce à PDO. Vous écrirez des requêtes sûres contre l'injection SQL, gérerez les écritures et les transactions, puis organiserez votre code avec des entités et des repositories testables. Tous les exercices s'exécutent sur SQLite en mémoire et se transposent directement à MySQL ou PostgreSQL.
Ce que tu sauras faire
- Configurer une connexion PDO sûre pour SQLite, MySQL ou PostgreSQL
- Lire des données avec le mode de récupération adapté
- Écrire des requêtes préparées qui empêchent l'injection SQL
- Insérer, modifier et supprimer des données et utiliser les transactions
- Structurer l'accès aux données avec des entités et un repository paginé
Programme des 5 leçons
- Comprendre le rôle de PDO et des pilotes de base de données
- Écrire un DSN pour SQLite, MySQL et PostgreSQL
- Configurer PDO pour lever des exceptions et renvoyer des tableaux associatifs
- 02
Lire des données : query, fetch et fetchAll
- Exécuter une requête SELECT et parcourir son résultat
- Choisir le bon mode de récupération (ASSOC, COLUMN, KEY_PAIR, OBJ)
- 03
Requêtes préparées et injection SQL
- Comprendre le mécanisme d'une injection SQL
- Utiliser prepare() et execute() avec des paramètres nommés ou positionnels
- Gérer les cas particuliers : LIKE, IN dynamique, noms de colonnes
- 04
Insérer, modifier, supprimer et transactions
- Écrire des INSERT, UPDATE et DELETE avec des requêtes préparées
- Récupérer l'identifiant inséré et le nombre de lignes modifiées
- Regrouper plusieurs écritures dans une transaction
- 05
Organiser l'accès aux données : entités et repository
- Isoler le SQL dans une classe Repository
- Transformer des lignes en objets typés (hydratation)
- Paginer des résultats proprement
Projet final
Gestionnaire de commandes en PHP et PDO
Construisez la couche d'accès aux données d'une petite boutique : tables produits, clients et commandes, un repository par entité et un service de passage de commande transactionnel. Un script CLI permet d'ajouter un produit, de lister le catalogue paginé et de passer une commande. Le code fonctionne avec SQLite en développement et accepte un DSN MySQL par variable d'environnement.
Livrables
- Script SQL de création du schéma (clés primaires, clés étrangères, contraintes UNIQUE et NOT NULL)
- Classes d'entités et repositories (find, save, page) recevant PDO par le constructeur
- Service passerCommande() utilisant une transaction et vérifiant le stock
- Script CLI de démonstration et fichier README expliquant la configuration par variables d'environnement
- Script de vérification qui exécute des scénarios sur SQLite en mémoire
Critères d'évaluation
- Aucune donnée externe concaténée dans une requête SQL
- Transactions correctes : rollback en cas d'échec et exception propagée
- Hydratation typée et retour null quand un élément est introuvable
- Pagination bornée et triée
- Identifiants de connexion lus depuis l'environnement, code lisible et commenté
Questions fréquentes
Faut-il utiliser PDO ou mysqli en PHP ?
PDO est généralement recommandé : il fonctionne avec de nombreux SGBD (MySQL, PostgreSQL, SQLite...) avec la même API et propose des paramètres nommés. mysqli reste valable mais ne sert qu'à MySQL/MariaDB.
Les requêtes préparées suffisent-elles contre l'injection SQL ?
Elles protègent toutes les valeurs. Les éléments qui ne peuvent pas être liés, comme un nom de colonne de tri, doivent en plus être validés par une liste blanche.
Ai-je besoin d'un serveur MySQL pour suivre le cours ?
Non. Les exercices utilisent SQLite en mémoire, intégré à PHP. Le code se transpose à MySQL ou PostgreSQL en changeant simplement le DSN.
Ce cours prépare-t-il à Laravel ?
Oui. Il explique ce que fait un ORM comme Eloquent sous le capot (requêtes préparées, hydratation, pagination) et précède le cours Laravel fondamentaux du parcours.
Ce cours, raconté pour ton métier
Dis ce que tu veux savoir faire : « PHP et bases de données (PDO) » prend sa place dans ton parcours, avec des exemples de ton secteur. Les notions restent celles du cours.