Obtenir des données de la base de données MySQL

Les données peuvent être extraites des tables MySQL en exécutant l'instruction SQL SELECT via la fonction PHP mysql_query. Vous avez plusieurs options pour récupérer les données de MySQL.

L'option la plus fréquemment utilisée est d'utiliser la fonction mysql_fetch_array(). Cette fonction renvoie la ligne sous forme de tableau associatif, de tableau numérique ou les deux. Cette fonction renvoie FALSE s'il n'y a plus de lignes.

Vous trouverez ci-dessous un exemple simple pour récupérer des enregistrements à partir de employee table.

Exemple

Essayez l'exemple suivant pour afficher tous les enregistrements de la table des employés.

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   
   $sql = 'SELECT emp_id, emp_name, emp_salary FROM employee';
   mysql_select_db('test_db');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   
   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "EMP ID :{$row['emp_id']}  <br> ".
         "EMP NAME : {$row['emp_name']} <br> ".
         "EMP SALARY : {$row['emp_salary']} <br> ".
         "--------------------------------<br>";
   }
   
   echo "Fetched data successfully\n";
   
   mysql_close($conn);
?>

Le contenu des lignes est affecté à la variable $ row et les valeurs de la ligne sont ensuite imprimées.

NOTE - N'oubliez jamais de mettre des accolades lorsque vous souhaitez insérer une valeur de tableau directement dans une chaîne.

Dans l'exemple ci-dessus, la constante MYSQL_ASSOCest utilisé comme deuxième argument de mysql_fetch_array (), de sorte qu'il renvoie la ligne sous forme de tableau associatif. Avec un tableau associatif, vous pouvez accéder au champ en utilisant leur nom au lieu d'utiliser l'index.

PHP fournit une autre fonction appelée mysql_fetch_assoc() qui renvoie également la ligne sous forme de tableau associatif.

Exemple

Essayez l'exemple suivant pour afficher tous les enregistrements de la table des employés en utilisant la fonction mysql_fetch_assoc ().

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   
   $sql = 'SELECT emp_id, emp_name, emp_salary FROM employee';
   mysql_select_db('test_db');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   
   while($row = mysql_fetch_assoc($retval)) {
      echo "EMP ID :{$row['emp_id']}  <br> ".
         "EMP NAME : {$row['emp_name']} <br> ".
         "EMP SALARY : {$row['emp_salary']} <br> ".
         "--------------------------------<br>";
   }
   
   echo "Fetched data successfully\n";
   
   mysql_close($conn);
?>

Vous pouvez également utiliser la constante MYSQL_NUM, comme deuxième argument de mysql_fetch_array (). Cela obligera la fonction à renvoyer un tableau avec un index numérique.

Exemple

Essayez l'exemple suivant pour afficher tous les enregistrements de la table des employés à l'aide de l'argument MYSQL_NUM.

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   
   $sql = 'SELECT emp_id, emp_name, emp_salary FROM employee';
   mysql_select_db('test_db');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   
   while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
      echo "EMP ID :{$row[0]}  <br> ".
         "EMP NAME : {$row[1]} <br> ".
         "EMP SALARY : {$row[2]} <br> ".
         "--------------------------------<br>";
   }
   
   echo "Fetched data successfully\n";
   
   mysql_close($conn);
?>

Tous les trois exemples ci-dessus produiront le même résultat.

Libérer la mémoire

Il est recommandé de libérer la mémoire du curseur à la fin de chaque instruction SELECT. Cela peut être fait en utilisant la fonction PHPmysql_free_result(). Vous trouverez ci-dessous l'exemple pour montrer comment il doit être utilisé.

Exemple

Essayez l'exemple suivant

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   
   $sql = 'SELECT emp_id, emp_name, emp_salary FROM employee';
   mysql_select_db('test_db');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   
   while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
      echo "EMP ID :{$row[0]}  <br> ".
         "EMP NAME : {$row[1]} <br> ".
         "EMP SALARY : {$row[2]} <br> ".
         "--------------------------------<br>";
   }
   
   mysql_free_result($retval);
   echo "Fetched data successfully\n";
   
   mysql_close($conn);
?>

Lors de la récupération des données, vous pouvez écrire du SQL aussi complexe que vous le souhaitez. La procédure restera la même que celle mentionnée ci-dessus.