Présentation 14 - Connexion à une base de données en PHP
PDO: c'est quoi?
- La classe PDO permet de se connecter avec presque toutes les bases de données
- Requêtes SELECT, UPDATE, INSERT, DELETE
- préparation des requêtes et transaction.

Pré-requis
- Serveur Apache (wamp)
- PHP > 5.1
- Une base de données
- Activer l'extension PDO ->


Initialiser PDO
//modèle de base de connexion PDO
$db = new PDO('mysql:host=localhost;dbname=bddexemple;charset=utf8mb4', 'user', 'pass');
// exemple dans votre cas
$db = new PDO('mysql:host=localhost;dbname='.DB_NAME.';charset=utf8mb4', DB_USERNAME, DB_PASSWORD);Instancier l'objet PDO
- mysql: indique qu'on utilise MySQL
- host: serveur de BD, généralement localhost
- dbname: nom de la base de données
- user: nom de l'usager qui à la permission
- passe: mot de passe de l'usager
Try ... Catch
L'utilisation de Try ... Catch vous permet:
- Tester une instanciation, condition, etc.
- Si une exception survient (erreur)
- Afficher ou logguer l'erreur
- Arrêter PHP
try {
$db = new PDO('mysql:host=localhost;dbname='.DB_NAME.';charset=utf8mb4', DB_USERNAME, DB_PASSWORD);
}
catch(PDOException $e) {
echo "Impossible de se connecter!";
die();
}Create - INSERT
/* 1ère étape : les données */
$datas = array(
'name' => "Vancouver",
'description' => "C'est pas mal loin!"
);
/* 2ème étape : préparer la requête */
$sql = 'INSERT INTO cities (name, description) VALUE (:name, :description)';
$qry = $db->prepare($sql);
/* 3ème étape: On exécute la requête */
$qry->execute($datas);Pour insérer une ligne dans une table
- 1er: Avoir le tableau de données (peut être $_POST)
- 2e: construction de la requête
- 3e: exécution de la requête
Read - SELECT
/* 1ère étape : les données */
$datas = array();
/* 2ème étape : préparer la requête */
$sql = "SELECT * FROM cities"; //le SQL
$qry = $db->prepare($sql);
/* 3ème étape: On exécute la requête */
$qry->execute($datas);
$cities = $qry->fetchAll(); //le résultat dans un tableau cities
//Boucle qui affiche les données
foreach ($cities as $city) {
echo $city['name']."<br>";
}Pour lire une ou des lignes d'une table
- $sql: le code SQL qui provient soit de PHPMyAdmin
- $qry: construction de la requête pour PDO
- $cities: nom du tableau qui reçoit les données
- ->fetchAll(): Méthode qui va chercher les données
Update - UPDATE
/* 1ère étape : les données */
$datas = array(
'id' => 2,
'name' => "Saint-Lin"
);
/* 2ème étape : préparer la requête */
$sql = "UPDATE cities SET name = :name WHERE id=:id"; //le SQL
$qry = $db->prepare($sql);
/* 3ème étape: On exécute la requête */
$count = $qry->execute($datas);
echo "Nombre d'éléments mis à jour: ".$count."<br>"; //va afficher le nombre de lignes affectéesPour mettre à jour une ou des lignes d'une table
- $sql: le code SQL qui fait la mise à jour
- $count : résultat de l’exécution de la requête SQL
- ->execute(): Méthode qui va exécuter le SQL
Delete - DELETE
/* 1ère étape : les données */
$datas = array(
'id' => 3
);
/* 2ème étape : préparer la requête */
$sql = "DELETE FROM cities WHERE id=:id"; //le SQL
$qry = $db->prepare($sql);
/* 3ème étape: On exécute la requête */
$count = $qry->execute($datas);
echo "Nombre d'éléments effacés: ".$count."<br>"; //va afficher le nombre de lignes affectéesPour effacer une ou des lignes d'une table
- $sql: le code SQL qui fait la supression
- $count : résultat de l’exécution de la requête SQL
- ->execute(): Méthode qui va exécuter le SQL