Recupero dei dati dal database MySQL

I dati possono essere recuperati dalle tabelle MySQL eseguendo l'istruzione SQL SELECT tramite la funzione PHP mysql_query. Hai diverse opzioni per recuperare i dati da MySQL.

L'opzione utilizzata più di frequente è utilizzare la funzione mysql_fetch_array(). Questa funzione restituisce riga come matrice associativa, matrice numerica o entrambi. Questa funzione restituisce FALSE se non ci sono più righe.

Di seguito è riportato un semplice esempio da cui recuperare i record employee tavolo.

Esempio

Prova il seguente esempio per visualizzare tutti i record dalla tabella dei dipendenti.

<?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);
?>

Il contenuto delle righe viene assegnato alla variabile $ riga e i valori in riga vengono quindi stampati.

NOTE - Ricorda sempre di mettere parentesi graffe quando vuoi inserire un valore di array direttamente in una stringa.

Nell'esempio sopra la costante MYSQL_ASSOCviene utilizzato come secondo argomento di mysql_fetch_array (), in modo che restituisca la riga come un array associativo. Con un array associativo puoi accedere al campo usando il loro nome invece di usare l'indice.

PHP fornisce un'altra funzione chiamata mysql_fetch_assoc() che restituisce anche la riga come un array associativo.

Esempio

Prova il seguente esempio per visualizzare tutti i record dalla tabella dei dipendenti utilizzando la funzione 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);
?>

Puoi anche usare la costante MYSQL_NUM, come secondo argomento di mysql_fetch_array (). Ciò farà sì che la funzione restituisca un array con un indice numerico.

Esempio

Prova il seguente esempio per visualizzare tutti i record dalla tabella dei dipendenti utilizzando l'argomento 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);
?>

Tutti i tre esempi precedenti produrranno lo stesso risultato.

Liberare la memoria

È una buona pratica rilasciare la memoria del cursore alla fine di ogni istruzione SELECT. Questo può essere fatto usando la funzione PHPmysql_free_result(). Di seguito è riportato l'esempio per mostrare come deve essere utilizzato.

Esempio

Prova il seguente esempio

<?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);
?>

Durante il recupero dei dati puoi scrivere SQL complesso come preferisci. La procedura rimarrà la stessa di cui sopra.