PHP-MySQL Cheatsheet

Author

Patrick Reuter (version de travail non-exhaustive)

Published

April 17, 2025

Définitions

  • Base de données
  • Tables
  • Champs (colonne)
  • Enregistrement (donnée ou ligne)

Il faut toujours distinguer la structure d’une base de données et les données d’une base de données.

Deux règles d’or : 1. Pas de duplication de données, et 2. La structure est indépendante des données

phpMyAdmin – Interface d’administration de la base de données

Adresse en local : http://localhost/phpMyAdmin

Adresse sur votre serveur au CREMI: https://pedagovic.uf-mi.u-bordeaux.fr/phpmyadmin/

Objectif : phpMyAdmin vous permet de concevoir une base de données via une interface graphique.

En particulier, dans le cadre de mon cours CSWD, vous l’utilisez pour les actions suivantes, en respectant certaines conventions :

  • Création d’une seule base de données
    • Dans le cadre du cours, nous travaillons sur une seule base de données s’appelant “conceptionweb” en local. Sur le serveur, elle s’appelle comme votre login. Cette base de données peut contenir plusieurs tables.
  • Création des tables
    • Choisissez des noms de tables en tout minuscules, sans accents, et sans espaces
  • Création des champs
    • Dans chaque table, le premier champ doit s’appeler id, il doit être de type entier INT et être une clé primaire, et l’identifiant doit être attribué automatiquement (AUTO_INCREMENT, A_I)
  • Conventions de noms
    • Noms des tables en singulier. Vous ne devez pas répéter le nom de la table dans les noms des champs. Noms des champs en clé étrangère id_nomdelatable.
  • Création d’enregistrements
    • Pour chaque table, créez au moins 2 données pour bien comprendre votre modèle de données

MySQL

Les instructions les plus courantes pour manipuler les données MySQL sont décrites ci-dessous :

Commande SQL Explication Opération CRUD
INSERT Permet d’ajouter un ou plusieurs enregistrements à une table. (Create)
SELECT Permet de récupérer un ou plusieurs enregistrements d’une table. (Read)
UPDATE Permet de modifier un ou plusieurs enregistrements d’une table. (Update)
DELETE Permet d’effacer un ou plusieurs enregistrements d’une table. (Delete)

PHP : inclusion du fichier

Dans chaque fichier qui veut accéder à la base de données, incluez le fichier connexion_base.php comme suit :

require_once("connexion_base.php");

Read : Exemple en PHP de requête SELECT avec parcours de données

Pour récupérer tous les enregistrements d’une table commentaire dans un tableau indexés d’un tableau associatif :

<?php
// exécuter une requete MySQL de type SELECT
$requete = "SELECT * FROM commentaire;";
$reponse = $pdo->prepare($requete);
$reponse->execute();

// récupérer tous les enregistrements dans un tableau
$enregistrements = $reponse->fetchAll();

// connaitre le nombre d'enregistrements
$nombreReponses = count($enregistrements);

// parcourir le tableau des enregistrements
for ($i=0; $i<count($enregistrements); $i++)
{
    echo $enregistrements[$i]['nom'];
    echo $enregistrements[$i]['texte'];
    echo $enregistrements[$i]['date'];
}
?>

Pour récupérer un seul enregistrement spécifique d’une table commentaire dans un tableau associatif :

<?php
// Récupérer une seule ligne
$requete = "SELECT * FROM commentaire WHERE id = ?;";
$reponse = $pdo->prepare($requete);
$reponse->execute(array($id));
$un_seul_enregistrement = $reponse->fetch();  // Retourne un seul enregistrement (ou false si non trouvé)

echo $un_seul_enregistrement['nom'];
echo $un_seul_enregistrement['texte'];
echo $un_seul_enregistrement['date'];
?>

Donc différence entre fetch() et fetchAll() :

  • fetchAll() : Récupère tous les enregistrements sous forme d’un tableau contenant des tableaux associatifs. À utiliser lorsque plusieurs résultats sont attendus.

  • fetch() : Récupère un seul enregistrement sous forme de tableau associatif. Retourne false si aucun résultat n’est trouvé.

Create : Exemple en PHP de requête INSERT

<?php
$nom = "Lafontaine"; // ou p.ex. récupération depuis un formulaire
$texte = "Article très intéressant"; // ou p.ex. récupération depuis un formulaire
// exécuter une requete MySQL de type INSERT
$requete="INSERT INTO commentaire (nom, texte, date) VALUES (?,?,NOW())";
$reponse=$pdo->prepare($requete);
$reponse->execute(array($nom, $texte));
?>

Connexion en PHP à une base de données MySQL : connexion_base.php

Fichier PHP (connexion_base.php):

<?php
// définition des paramètres de connexion à la base de données
$config_base['hote'] = "localhost";
$config_base['utilisateur'] = "root";
$config_base['motdepasse'] = "root"; // si Wampserver, mettez "" ici
$config_base['nom_base'] = "conceptionweb";

if (substr($_SERVER['SERVER_NAME'],-17) == "emi.u-bordeaux.fr")
{
    $config_base['hote'] = "mariadb";
    $config_base['utilisateur'] = "loginENT";
    $config_base['motdepasse'] = "MOTDEPASSE";
    $config_base['nom_base'] = "loginENT";
}

// connexion à la base de données
try {
    $pdo = new PDO( "mysql:host={$config_base['hote']};
                    dbname={$config_base['nom_base']}",
                    "{$config_base['utilisateur']}",
                    "{$config_base['motdepasse']}");

    // afficher les messages d'erreurs pour trouver les erreurs
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

    // jeu de caractères : UTF-8
    $pdo->query("SET NAMES utf8");
    $pdo->query("SET CHARACTER SET utf8");
}
catch (PDOException $exception) {
    echo "Connexion échouée : " . $exception->getMessage();
}
?>

Exemple de base de données

Exemple 1

Table pays et Table continent

id nom population id_continent
INT TEXT INT INT
1 Brésil 201103330 2
2 France 64768389 1
3 Suisse 7581000 1
id nom
INT TEXT
1 Europe
2 Amériques

Structure

  • Il y a deux tables :
    • Une table pays avec 4 champs (ou attributes ou columns).
    • Une table continent avec 2 champs.
  • Relation 1:n (one-to-many) :
    • Un pays appartient à un seul continent.
    • Un continent peut contenir plusieurs pays.

Données

  • 3 enregistrements (lignes) dans la table pays.
  • 2 enregistrements dans la table continent.

Exemple 2

Table nouvelle, Table tag et Table nouvelle_tag

Table nouvelle
id texte date
INT TEXT DATETIME
1 L’AS Saint Etienne en route vers la Ligue 1 2024-02-02 08:32:31
2 Encore un James Bond avec Daniel Craig ? 2024-11-26 11:03:22
3 Droit à une feuille manuscrite à l’examen 2025-04-01 11:23:01
4 Les JO 2024 de Paris était super 2025-03-26 17:52:40
Table tag
id nom
INT TEXT
1 Sport
2 Foot
3 Cinéma
4 Université
5 People
Table nouvelle_tag (table de jointure)
id id_nouvelle id_tag
INT INT INT
1 1 1
2 1 2
3 2 3
4 2 5
5 3 4
6 4 1

Structure

  • Il y a trois tables :
    • Une table nouvelle avec 3 champs (attributes ou columns).
    • Une table tag avec 2 champs.
    • Une table de jointure nouvelle_tag avec 3 champs, dont 1 clé primaire et 2 clés étrangères.
  • Relation n:m (many-to-many) :
    • Une nouvelle peut avoir plusieurs tags.
    • Un tag peut être associé à plusieurs nouvelles.

Données

  • 4 enregistrements dans la table nouvelle.
  • 5 enregistrements dans la table tag.
  • 6 enregistrements dans la table de jointure nouvelle_tag.