📘 Chapitre 1 – Connexion à une base de données avec PDO

1. 🎯 Objectif pédagogique

Être capable de connecter un script PHP à une base de données MySQL en utilisant l’extension PDO, de manière sécurisée et réutilisable.

2. 📚 Concepts abordés

  • Présentation de PDO (PHP Data Objects)
  • Chaîne de connexion DSN (mysql:host=...;dbname=...)
  • Gestion des exceptions avec try/catch
  • Paramètres de connexion (host, dbname, user, password)
  • Fermeture de connexion (libération des ressources)

3. 🧠 Explication théorique

PDO est une extension PHP permettant de se connecter à différentes bases de données de manière uniforme. L’avantage principal est la sécurité et la portabilité. Une connexion PDO suit généralement ce schéma :

$pdo = new PDO('mysql:host=localhost;dbname=ma_base', 'user', 'password');

Il est recommandé d’utiliser un bloc try/catch pour capturer les erreurs de connexion et éviter les messages d’erreur non contrôlés.

4. 🛠 Tutoriel pratique

Résumé du travail : Créer un fichier connexion.php qui établit une connexion PDO à une base de données blogdb.

Arborescence projet :

projet_bdd/
 └── connexion.php

Étape 1 : Préparer la base MySQL

Créer une base blogdb via phpMyAdmin ou avec :

CREATE DATABASE blogdb;

Étape 2 : Écrire le code de connexion

<?php
$host = 'localhost';
$dbname = 'blogdb';
$username = 'root';
$password = '';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connexion réussie à la base $dbname";
} catch (PDOException $e) {
    echo "Erreur de connexion : " . $e->getMessage();
}

Étape 3 : Tester la connexion

Étape 4 : Centraliser la connexion (optionnel)

Pour les projets plus grands, placer le code dans un fichier config/connexion.php et l’inclure dans les autres scripts avec require.

5. 🧾 Résumé et points-clés

  • PDO est recommandé pour les connexions MySQL en PHP.
  • Utiliser try/catch pour gérer les erreurs.
  • setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION) permet de lever des exceptions pour tout problème SQL.
  • La connexion peut être centralisée dans un fichier unique.