6.Le langage PHP

6.15.Utilisation de bases de données avec PHP

6.15.4.Utilisation de MySQL avec PHP

6.15.4.1.Introduction

Nous avons choisi de traiter plus particulièrement MySQL car c'est cette base de données que l'on retrouve chez la plupart des hébergeurs. Et suffit à répondre aux besoins de la plupart des sites web.
L'accès à une base de données se réalise en 3 étapes:
  • La connexion
  • La requête SQL
  • La déconnexion

6.15.4.2.La connexion

Avant de faire le moindre accès à une base de données, il faut impérativement établir une connexion et choisir sa base de données (en effet un serveur de bases de données peut donner accès à plusieurs bases même si les hébergeurs gratuits - ou presque - n'en proposent généralement qu'une seule).
Cela se fait de la manière suivante:
<?php
    $serveurBD = "localhost";
    $nomUtilisateur = "toto";
    $motDePasse = "secret";
    $baseDeDonnees = "mabase";
   
    mysql_connect($serveurBD,
                  $nomUtilisateur,
                  $motDePasse);

    $connexionReussie = mysql_select_db($baseDeDonnees);
   
    // Et pour mettre fin à la connexion
    mysql_close();
?>
  • $serveurBD est le nom (ou adresse IP) du serveur où se trouve la base de données MySQL (C'est une information qui vous est donnée par votre hébergeur. Chez vous, en local, c'est "localhost")
  • $nomUtilisateur est l'identifiant sous lequel vous souhaitez vous connecter à la base de données (C'est également une information qui vous est donnée par votre hébergeur). Chez vous par défaut, c'est généralement "root".
  • $motDePasse est le mot de passe associé à l'identifiant ci-dessus (Ceci est également communiqué par votre hébergeur). Chez vous c'est une chaîne vide par défaut.
  • $baseDeDonnees est un nom de base de données qui doit exister (voir également avec votre hébergeur). Chez vous, vous devrez en créer une en passant par exemple par PHPMyAdmin (A vous de choisir son nom).
mysql_connect() retourne un identifiant de connexion ou FALSE en cas d'échec.
Voici un exemple concret en local:
<?php 
    $serveurBD = "localhost";
    $nomUtilisateur = "root";
    $motDePasse = "";
    $baseDeDonnees = "mabase";
   
    $idConnexion = mysql_connect($serveurBD,
                                 $nomUtilisateur,
                                 $motDePasse);
                                 
    if ($idConnexion !== FALSE) echo "Connexion au serveur réussie";
    else echo "Echec de connexion au serveur";

    $connexionBase = mysql_select_db($baseDeDonnees);
    if ($connexionBase) echo "Connexion à la base réussie";
    else echo "Echec de connexion à la base"; 

    // Et pour mettre fin à la connexion
    mysql_close();
?>
mysql_select_db() renvoie un booléen utile pour savoir si la connexion a été réussie.
Avant de poursuivre plus avant, après avoir créé une base de données, assurez-vous que lorsque vous exécutez le script précédent vous voyez s'afficher les 2 messages de connexions réussies. Sinon, il vous faudra vous assurer que votre serveur de base de données tourne bien, que la base existe et que vous avez indiqué les bons paramètres au niveau du script.
On peut aussi utiliser une autre méthode pour stopper le script si la connexion ne peut pas se faire (inutile d'essayer d'accéder à la base si le serveur n'est pas accessible) :
<?php
    $serveurBD = "localhost";
    $nomUtilisateur = "root";
    $motDePasse = "";
    $baseDeDonnees = "mabase";
   
    @mysql_connect($serveurBD,
                 $nomUtilisateur,
                 $motDePasse) 
      or die("Impossible de se connecter au serveur de bases de données.");
    @mysql_select_db($baseDeDonnees)
      or die("Cette base de donnees n'existe pas");

    // Et pour mettre fin à la connexion
    mysql_close();
?>
or die("") permet d'afficher un texte et de stopper le script si la fonction précédente renvoie une erreur. Notez que pour ne pas avoir à l'écran les messages d'erreur remontés par PHP, il suffit de mettre un @ devant les appels aux fonctions, par exemple @mysql_connect()

6.15.4.3.La deconnexion

Comme vous avez pu le voir dans les exemples précédents, la déconnexion se fait par appel à la fonction mysql_close().
Il est indispensable, de faire appel à cette fonction avant la fin de l'execution du script PHP. Sinon, les ressources ne sont pas libérées et cela peut conduire à ce que la base de données devienne (pour un temps) inaccessible (le nombre de connexions pouvant être simultanément ouvertes étant généralement limité).

6.15.4.4.Requête SQL ne retournant pas de résultat (ex: CREATE TABLE, INSERT, UPDATE, etc.)

Pour exécuter une requête SQL nous pouvons faire appel à la fonction mysql_query().
<?php
    $serveurBD = "localhost";
    $nomUtilisateur = "root";
    $motDePasse = "";
    $baseDeDonnees = "mabase";
   
    @mysql_connect($serveurBD,
                 $nomUtilisateur,
                 $motDePasse) 
      or die("Impossible de se connecter au serveur de bases de données.");
    @mysql_select_db($baseDeDonnees)
      or die("Cette base de donnees n'existe pas");

    $sql = "CREATE TABLE IF NOT EXISTS exemple1 ".
                  "(id INTEGER PRIMARY KEY AUTO_INCREMENT,".
                   "nom VARCHAR(128))";
    $retour = mysql_query($sql);
    if ($retour === FALSE) {
        echo "La requête CREATE TABLE a échoué.";
    } else {
        echo "La table exemple1 a été créé.";
    }

    $sql = "INSERT INTO exemple1 (nom) VALUES ('Exemple phpfacile')";
    $retour = mysql_query($sql);
    if ($retour === FALSE) {
        echo "La requête INSERT a échoué.";
    } else {
        echo "Un nouveau nom a été ajouté dans la table exemple1.";
    }
    
    // Et pour mettre fin à la connexion
    mysql_close();
?>
Avec ce script, nous créons une table exemple1 puis nous y inserons un nom.
rem
  • Si la table exemple1 existe déjà, elle ne sera pas recréée (si elle est différente de celle que nous voulons créer l'insertion risque d'échouer).
  • Si vous exécutez plusieurs fois ce script, le nom sera inséré plusieurs fois (nous n'avons pas mis de contrainte d'unicité).

6.15.4.5.Requête SQL retournant des résultats (ex: SELECT)

Pour une requête de type SELECT, nous ferons également appel à la fonction mysql_query() mais le traitement sera légèrement différent.
<?php
    $serveurBD = "localhost";
    $nomUtilisateur = "root";
    $motDePasse = "";
    $baseDeDonnees = "mabase";
   
    @mysql_connect($serveurBD,
                 $nomUtilisateur,
                 $motDePasse) 
      or die("Impossible de se connecter au serveur de bases de données.");
    @mysql_select_db($baseDeDonnees)
      or die("Cette base de donnees n'existe pas");

    $sql = "SELECT * FROM exemple1";
    $retour = mysql_query($sql);
    if ($retour === FALSE) {
        echo "La requête SELECT a échoué.";
    } else {
        while ($enreg = mysql_fetch_array($retour)) {
            echo $enreg["id"]."-".$enreg["nom"]."<br />\n";
        }
    }
    
    // Et pour mettre fin à la connexion
    mysql_close();
?>
Avec ce script, nous listons les noms stockés dans la table exemple1 créée précédemment.
Ici vous pouvez apprendre :
1.Introduction
2.Installation de PHP
3.Exécuter un script PHP
4.Configuration et environnement d'exécution de PHP
5.L'environnement de développement
6.Le langage PHP
6.1.Introduction
6.2.Mon premier script
6.3.La syntaxe
6.4.Les boucles (for, while, foreach, do) en PHP
6.5.Les tableaux (array) en PHP
6.6.Les fonctions
6.7.Include
6.8.Programmation orientée objet
6.9.Les fonctions de manipulation de tableaux
6.10.Les dates
6.11.Fichiers et répertoires
6.12.Les paramètres d'entrée d'un script PHP
6.13.Utilisation de la librairie graphique
6.14.JpGraph pour tracer courbes et diagrammes
6.15.Utilisation de bases de données avec PHP
6.15.1.Introduction
6.15.2.Utilisation de SQLite
6.15.3.PHP et MySQL (avec MySQLi)
6.15.4.Utilisation de MySQL avec PHP
6.15.4.1.Introduction
6.15.4.2.La connexion
6.15.4.3.La deconnexion
6.15.4.4.Requête SQL ne retournant pas de résultat (ex: CREATE TABLE, INSERT, UPDATE, etc.)
6.15.4.5.Requête SQL retournant des résultats (ex: SELECT)
6.15.5.PDO: PHP Data Objects
6.15.6.Association Objet-Relationnel (ORM) avec Doctrine
6.16.LDAP
6.17.Parser un document XML
6.18.Génération de documents PDF en PHP
6.19.Envoyer un mail
6.20.Créer un webmail avec IMAP
6.21.Droits utilisateurs: chmod 777
6.22.Localization (l10n) et Traduction
7.PHP pour le web
8.Internationalisation (i18n) et encodage en PHP
9.Créer un fichier de logs/traces
10.Déboguer une application PHP
11.Programmer en PHP en toute sécurité
12.Bibilothèque PEAR
13.Zend Framework 2 et 3
14.Installation de Zend Framework 2
15.Joomla
16.Composer
17.PHPUnit
18.PHPDocumentor
19.Mesure de temps d'exécution (benchmark) d'une fonction PHP
20.Exemples de scripts PHP
21.Erreurs fréquentes et les solutions
22.Archives
Version imprimable: imprimer