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

  1. 01

    Se connecter à une base avec PDO

    15 minAperçu gratuit
    • 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

    PDODSN et options de connexionPDOException

  2. 02

    Lire des données : query, fetch et fetchAll

    15 min
    • Exécuter une requête SELECT et parcourir son résultat
    • Choisir le bon mode de récupération (ASSOC, COLUMN, KEY_PAIR, OBJ)

    query() et PDOStatementModes de récupération

  3. 03

    Requêtes préparées et injection SQL

    20 min
    • 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

    Requêtes préparéesInjection SQL

  4. 04

    Insérer, modifier, supprimer et transactions

    20 min
    • É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

    INSERT, UPDATE, DELETETransactions

  5. 05

    Organiser l'accès aux données : entités et repository

    20 min
    • Isoler le SQL dans une classe Repository
    • Transformer des lignes en objets typés (hydratation)
    • Paginer des résultats proprement

    Pattern RepositoryHydratation d'entitésPagination SQL

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.

L'aperçu est gratuit, et les cours se suivent un par un sans payer. Le parcours ne contient que des leçons du catalogue.