Imprimer tout le livreImprimer tout le livre

Interfaçage de base de données MySQL avec PHP

L'intérêt majeur de PHP est son interfaçage avec un grand nombre de serveurs de bases de données (MySQL, Postgres, Oracle, utilisation de ODBC, ...) d'une manière relativement simple et efficace. Pratiquement tous les SGBD sont pris en charge mais PHP s'utilise le plus souvent avec le serveur Mysql. Le logiciel MySQL (TM) est un serveur de base de données SQL très rapide, multi-threadé, multi-utilisateur et robuste. Dans ce module, nous abordons la mise en place d'interfaces PHP de base de données sous Mysql.

Site: Touch By SukaJanda01
Cours: Developpement web dynamique avec PHP
Livre: Interfaçage de base de données MySQL avec PHP
Imprimé par: Visiteur anonyme
Date: jeudi 1 mai 2025, 13:05

1 Introduction

L'intérêt majeur de PHP est son interfaçage avec un grand nombre de serveurs de bases de données (MySQL, Postgres, Oracle, utilisation de ODBC, ...) d'une manière relativement simple et efficace. Pratiquement tous les SGBD sont pris en charge mais PHP s'utilise le plus souvent avec le serveur Mysql. Le logiciel MySQL (TM) est un serveur de base de données SQL très rapide, multi-threadé, multi-utilisateur et robuste.Dans cette séquence nous allons voir comment mettre en place des interfaces de base de données pour ajouter, supprimer et modifier des données dans les tables d'une base.

2 Interfaçage base de données: PHP/Mysql

En utilisant l'outil phpMyadmin créer sur le serveur MySQL une base de données GestionEtu contenant les tables etudiants, classes et inscription pour la gestion des inscriptions des étudiants et une table utilisateurs (id, login, password) pour la gestion de l'espace administrateur. Vous expliquerez le choix de chacune des propriétés de champs (type, valeurs par défaut, auto increment, ...). Pour plus d'information sur MySQL: http://www.mysql.com/documentation

3 Fonctionnement de base

PHP est un langage côté serveur, qui peut être utilisé pour créer des pages Web dynamiques. Il fournit un support d'accès à plusieurs systèmes de bases de données, dont MySQL. L'exploitation de MySQL avec PHP peut s'effectuer en 5 étapes :

  1. Connexion au serveur MySQL (authentification),
  2. Sélection d'une base de données,
  3. Lancement d'une requête,
  4. Exploitation (affichage, test, ...) des résultats de la requête,
  5. Fermeture de la connexion.

4 Connexion au serveur MySQL (authentification

Il consiste  à demandez au serveur l'autorisation de vous connecter. Deux réponses possibles:

  • refus: le serveur vous renvoie un false
  • accordé: le serveur vous renvoie une ressource (différent de false) identifiant votre connexion.

mysql_connect est la fonction de connexion. Elle a besoin de trois paramètres fondamentaux: l'adresse du serveur ("localhost" dans l'exemple 1), le login (toto dans l'exemple 1) et le mot de passe (tati dans l'exemple 1). La fonction mysql_connect retourne l'identifiant de la connexion au serveur MySQL en cas de succès ou FALSE en cas d'échec.

4.1 Exemple et applications

Exemple:

<?php

$link = mysql_connect("localhost", "toto", "tati") or

die("Impossible de se connecter : " . mysql_error()); //== echo puis exit

echo 'Connexion réussie';

?>

Applications

  1.  Quel est le message d'erreur si le nom de la machine est incorrect, le login ou le mot de passe?
  2. Quel est le message d'erreur si le login n'est pas spécifié?
  3. Utiliser le caractère @ devant la fonction mysql_connect. Quel est le résultat obtenu?
  4. Discussion...

5 Sélection d'une base de données

Après la connexion au serveur Mysql vous choisissez la base de données à utiliser. Toutes les requêtes lancées ensuite concerneront uniquement cette base de données. La fonction mysql_select_db permet de spécifier la base que vous utilisez. Elle dispose d'un paramètre obligatoire: le nom de la base de données et d'un paramètre optionnel: l'identifiant de la connexion (par défaut la dernière connexion). La fonction mysql_select_db retourne TRUE en cas de succès et FALSE en cas d'échec.

5.1 Exemple

<?php

//code exemple 1 d'abord

// Rendre gestionEtu, la base courante

$db_selected = mysql_select_db('gestionEtu', $link);

if (!$db_selected) {

die ('Impossible de sélectionner cette base de données : ' . mysql_error());

}

?>

6 Lancement d'une requête

La requête concerne la base de données en cours. La fonction mysql_query est utilisée pour envoyer une requête à une base de donnée Mysql. Cette fonction dispose d'un paramètre obligatoire: la requête SQL et d'un paramètre optionnel: l'identifiant de la connexion (par défaut ladernière connexion). Si la requête à exécuter est de type SELECT, SHOW, DESCRIBE ou EXPLAIN la fonction mysql_query renvoie une ressource en cas de succès, ou FALSE en cas d'erreur. Pour les autres types de requêtes (UPDATE, DELETE, DROP, ...) la fonction mysql_query renvoie TRUE en cas de succès ou FALSE en cas d'erreur.

6.1 Exemple

<?php

// code exemple 2 ensuite

$requet = 'SELECT nom,prenom FROM etudiants';

if($res = mysql_query($requete))

  //traitement resultat voir exemple 4

else

   echo "Erreur de requête de base de données.";

?>

7 Exploitation (affichage, test, ...) des résultats de la requête

Il s'agit généralement d'afficher le résultat de la requête où de renseigner sur le nombre d'insertion, de suppression, ... réalisées. Pour extraire les données retournées plusieurs fonctions peuvent être utilisées selon le format voulu:

  1. mysql_fetch_row: .La ligne est retournée sous la forme d'un tableau. Chaque colonne est enregistrée sous la forme d'un tableau commençant à la position 0;
  2. mysql_fetch_assoc:Retourne une ligne de résultat MySQL sous la forme d'un tableau associatif;
  3. mysql_fetch_array: Retourne une ligne de résultat MySQL sous la forme d'un tableau associatif, d'un tableau indexé, ou les deux. Le deuxième paramètre permet de spécifier le type de tableau attendu ( MYSQL_BOTH (défaut), MYSQL_ASSOC, MYSQL_NUM);
  4. mysql_fetch_object: Retourne une ligne de résultat MySQL sous la forme d'un objet.

Ces fonctions prennent comme paramètre la ressource retournée par mysql_query. La récupération se fait enregistrement par enregistrement et ces fonctions renvoient false si la fin des enregistrements est atteinte. Généralement ces fonctions sont utilisées à l'intérieur d'une boucle pour parcourir l'ensemble du résultat.

7.1 Exemple

<?php

//cas 1

// code exemple 3

$row=mysql_fetch_row($res);

echo $row[0]; // le nom

echo $row[1]; // le prenom

?>

<?php

//cas 2

// code exemple 3

while ($row = mysql_fetch_assoc($res)){

echo $row["nom"];

echo $row["prenom"];

}

mysql_free_result($res);

?>

<?php

//cas 3

// code exemple 3

while ($row = mysql_fetch_array($res, MYSQL_BOTH)){

printf ("nom : %s adresse : %s", $row[0], $row["prenom"]);

}

mysql_free_result($result);

?>

 

8 Fermeture de la connexion

La fermeture de la connexion qui permet de libérer la ressource n'est habituellement pas nécessaire. En effet les connexions non persistantes ouvertes sont automatiquement fermées à la fin de l'exécution du script. La fonction mysql_close est utilisée pour fermer une connexion. Elle retourne TRUE en cas de succès et FALSE sinon.

9 Remarques

  1. A chaque étape (authentification, sélection de la base, ...) il convient de vérifier et de traiter les erreurs éventuelles (erreur de connexion au serveur, erreur de sélection de la base,...).
  2. Le processus décrit pour Mysql est identique pour les autres SGBD... Seules les fonctions PHP à utiliser différent.

10 Autres fonctions PHP/MySQL

Il existe de nombreuses autres fonctions pour faciliter la manipulation des bases de données Mysql. Le tableau suivant en liste quelques unes avec des exemples d'utilisation.

Fonction Exemple Description
mysql_num_rows mysql_num_rows($res) renvoie le nombre d'enregistrement du résultat
mysql_affected_rows mysql_affected_rows() renvoie le nombre d'enregistrement affecté par la dernière requête (insertion, suppression, mise à jour)
mysql_data_seek mysql_data_seek($res,$i) positionne le curseur sur le numéro d'enregistrement $i donné
mysql_field_name  mysql_field_name($res,$i) renvoie le nom d'une colonne dont le rang $i est donné
mysql_pconnect mysql_pconnect($serv,$login,$pass) ouvre une connexion persistante