2.2	Fonctions PHP - MySQL
A.	Se connecter à un serveur de bases de données
- 
Avant de pouvoir accéder à une base de données, il faut établir une connexion avec le serveur qui l'héberge. On spécifie:
- 
le nom de la machine sur laquelle est installé le serveur (host)
- 
un nom d'utilisateur
- 
le mot de passe correspondant
mysql_pconnect
mysql_pconnect(host, username, password);
mysql_pconnect("tecfasun1.unige.ch","nobody","");
- 
`nobody' est un utilisateur qui peut se connecter sans mot de passe mais qui a des permissions limitées.
 
B.	Sélectioner une base de données
- 
Un serveur héberge plusieurs bases de données qui chacune contiennent des tables. 
mysql_select_db
mysql_select_db(dbname);
mysql_select_db("demo");
 
C.	Exécuter une requête SQL
- 
PHP permet d'envoyer n'importe quelle requête SQL au serveur en utilisant la commande mysql_query.
- 
Le nom d'utilisateur et le mot de passe spécifiés en se connectant à la base de données déterminent si la requête peut être exécutée.
- 
La commande retourne un identificateur de résultat que l'on stocke dans une variable pour l'utiliser par la suite ($result).
mysql_query
mysql_query(requête_SQL);
$result = mysql_query("SELECT * FROM demo1");
La variable 
$result
 est "boolean" et contient à ce moment
- 
1 (TRUE) si l'opération a été effectuée
- 
0 (FALSE) si il y a eu un problème.
qui est très utile pour le déboguage!
 
D. 	Traitement des résultats
- 
Après avoir soumis une requête à mySQL, la fonction mysql_query nous donne un identificateur de résultats ($result) qu'il faut décortiquer et afficher.
- 
Il existe de multiples façons d'accéder au résultat d'une requête. En voici deux.
Traitement indépendant du nom des champs
mysql_fetch_row 
mysql_fetch_row(identificateur)
$row = mysql_fetch_row($result);
- 
prend un enregistrement dans le résultats. Cet enregistrement est un vecteur de valeurs qui correspond aux champs de la base de données.
mysql_num_fields
mysql_num_fields(identificateur)
$nb_champs = mysql_num_fields($result);
- 
donne le nombre de champs dans un enregistrement.
 
E. 	Gérer les erreurs (Warnings)
- 
Après avoir fait une opération mySQL, PHP peut nous rétourner des "warnings" pour nous prévenir d'une erreur.
- 
Il existe deux fonctions PHP à accéder aux erreurs:
mysql_errno() 
mysql_errno(identificateur)
- 
rétourne la valeur numérique d'erreur de la dernière opération mySQL ou zéro (0) s'il n'y pas des erreurs.
mysql_error()
mysql_error(identificateur)
- 
rétourne la description d'erreur de la dernière opération mySQL ou un "string" vide "" dans le cas ou il n'y a pas des erreurs.
 
Exemple avec les deux fonctions:
<?php
 mysql_connect("marliesle");
 echo mysql_errno().": ".mysql_error()."<BR>";
 mysql_select_db("nonexistentdb");
 echo mysql_errno().": ".mysql_error()."<BR>";
 $conn = mysql_query("SELECT * FROM nonexistenttable");
 echo mysql_errno().": ".mysql_error()."<BR>";
?>
 
Exemple 2-1: Traitement indépendant du nom des champs.
Génération d'une table HTML avec les enregistrements contenus dans un résultat
<?
mysql_pconnect("tecfasun1.unige.ch","nobody","");
mysql_select_db("demo");
$result = mysql_query("SELECT * FROM demo1");
?>
<table  border="1">   <tr>
<?
while  ($row  =  mysql_fetch_row($result))  { 
    echo  "<tr>"; 
    for  ($i=0;  $i<mysql_num_fields($result);  $i++)  { 
      echo  "<td>"; 
      // test if this is the URL
      if ($i == 4) { echo  "<a href='$row[$i]'>$row[$i]</a>";  }
      else {  echo  "$row[$i]"; }
      echo  "</td>"; 
    } }
?>
</table>
Traitement en utilisant le nom des champs
mysql_num_rows
mysql_num_rows(identificateur);
$nb_enregistrements = mysql_num_rows($result);
- 
Donne le nombre d'enregistrements contenus dans le résultat identifié par $result
mysql_result
mysql_result(identificateur, index, champ);
$nom = mysql_result($result,0,'fullname');
- 
index
 désigne le numéro de l'enregistrement. L'indexation commence à 0 ! (zéro). A l'index 0 correspond le premier enregistrement.
- 
champ
 désigne le nom du champ que l'on veut récupérer.
 
 
Exemple 2-2: Traitement utilisant le nom des champs.
Génération d'une table HTML avec les enregistrements contenus dans un résultat
 
<? 
mysql_pconnect( "localhost", "nobody", "")  or  die( "Unable  to  connect  to  SQL  server"); 
mysql_select_db("demo")  or  die ( "Unable  to  select  database"); 
$result  =  mysql_query( "select * from demo1"); 
?> 
  <table  border="1"> 
<? 
$i = 0;
while ($i < mysql_num_rows($result)) {
  echo  "<tr>";   
  echo  "<td>";   
  echo mysql_result($result,$i,'id');
  echo  "</td>";   
  echo  "<td>";   
  echo mysql_result($result,$i,'fullname');
  echo  "</td>";   
  echo  "<td>";   
  echo mysql_result($result,$i,'love');
  echo  "</td>";   
  echo  "<td>";   
  echo mysql_result($result,$i,'sports');
  echo  "</td>";   
  echo  "</tr>"; 
  $i++;
}
  echo  "</table>"; 
?>