Table des matières

Sommaire Bdd

BDD - MySQL et PHP

[Mise à jour le 10/8/2021]

Sources

Mots-clés : SGBD, base, table, enregistrement, champ, requêtes, SQL.


1. Introduction

En PHP, on se connecte à une base de données avec les méthodes suivantes:

  1. Avec l'extension mysqli_ (modèle procédural lié à MySQL)
  2. Avec l'extension PDO (modèle objet) : à privilégier, car plus moderne et permet l'accès à divers types de BDD (SQLite, MySQL, etc.) avec la même syntaxe.

PDO (PHP Data OBjects) comprend trois classes :

Extrait de la table jeux_video de la base test utilisée dans les exemples

On utilise le SGBD MySQL pour les exemples de la base test. La table jeux_video peut être téléchargé ici.

2. Accès à une base de données MySQL avec PHP

L'exploitation d'une base de données se fait à travers les actions suivantes :

  1. Connexion à la base
  2. Envoi de requêtes au serveur
  3. Traitement du résultat des requêtes
  4. Fermeture de la connexion


2.1 Connexion à la base

La connexion à la base se fait une seule fois en créant un objet de la classe PDO.
L'objet $<nomConnect> représente la connexion au serveur. Il est utilisé pour toutes les opérations à effectuer sur la base.
*.php
$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', ''); 
*.php
try
{
	$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
}
catch (Exception $e)
{
        die('Erreur : ' . $e->getMessage()); // En cas d'erreur, on affiche un message et on arrête tout
}

2.2 Envoi d'une requête

L'information liée au bon fonctionnement de la requête ou son résultat sont placés dans une variable pour être traités.

Cas 1 - Si la requête ne retourne pas de résultat (INSERT, UPDATE, DELETE, etc.), on utilise la méthode exec().

exec() retourne un entier contenant le nombre de lignes concernées par la requête.
*.php
$nb=$bdd->exec('UPDATE jeux_video SET possesseur="Laurent" WHERE ID="1"');

Cas 2 - Si la requête retourne un résultat (SELECT, etc.), on utilise la méthode query().

Retourne FALSE en cas d'erreur ou un objet représentant l'ensemble des lignes de résultat.
*.php
$reponse = $bdd->query('SELECT * FROM jeux_video WHERE console="NES"');


2.3 Traitement du résultat de la requête

Pour les opérations d'insertion, de suppression ou de mise à jour des données dans une base, il est utile de vérifier si la requête a bien été exécutée.
*.php
echo "<p> $nb ligne(s) modifiée(s) </p>"; // Résultat : 1 ligne(s) modifiée(s)

$nb contient le nombre de lignes modifiées dans l'exemple de cas 1 précédent. Cette valeur pourra être testée pour valider la requête.

Lorsqu'il s'agit de lire le résultat d'une requête contenant la commande SELECT, la méthode query() retourne un objet de type PDOStatement ($reponse dans les exemples). La classe PDOStatement dispose de méthodes permettant de récupérer des données. La méthode des objets PDOStatement couramment utilisée pour lire des données est fetch().


Pour lire toutes les lignes du résultat, il faut créer une boucle while qui lit chaque ligne.

*.php
while ($donnees = $reponse->fetch()) {
    echo '<p>' . $donnees['nom'].' - '.$donnees['possesseur'].' - '.$donnees['prix'].'</p>';
}

2.4 Fermeture de la connexion

Pour clore la connexion, il suffit de détruire l'objet en assignant NULL à la variable qui le gère. Si ce n'est pas fait explicitement, PHP fermera automatiquement la connexion lorsque le script arrivera à la fin.
*.php
$bdd=null;

Résumé