dal 2015 - visita n. 651
Query select
Query select

 

Query select

Per prelevare i dati da un database MySQL si utilizza il comando SQL: SELECT. Questa operazione può essere gestita sia a linea di comando sia con uno script PHP.

Sintassi:

Questa è la sintassi generale del comando SELECT per prelevare dei dati da una tabella MySQL:

SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE Clause]
[OFFSET M ][LIMIT N]

Select a linea di comando

Useremo il comando SELECT per prelevare dati dalla tabella dbprova_tbl.

Esempio:

L'esempio seguente restituirà tutti i record di una tabella:

# mysql -u root -p password;

E, dopo l'invio della password di root:

mysql> use DBPROVA;
Database changed
mysql> SELECT * from dbprova_tbl
+-------------+----------------+-----------------+-----------------+
| prova_id    | prova_title    | prova_author    | submission_date |
+-------------+----------------+-----------------+-----------------+
|           1 | Learn PHP      | J. Tizio        | 2015-02-10      |
|           2 | Learn MySQL    | A. Caio         | 2015-02-10      |
|           3 | JAVA Tutorial  | S. Pinco        | 2015-02-18      |
+-------------+----------------+-----------------+-----------------+
3 rows in set (0.01 sec)

Select con script PHP

È possibile utilizzare lo stesso comando SELECT con la funzione PHP mysql_query(). Questa funzione consente di eseguire il comando SELECT, ma serve poi un'altra funzione PHP mysql_fetch_array() per recuperare tutti i dati selezionati. Questa seconda funzione restituisce una riga di un array associativo, di un array numerico o di entrambi. Questa funzione restituisce FALSE se non ci sono più righe da trattare.

Di seguito un semplice esempio per il prelievo dei record dalla tabella dbprova_tbl.

Esempio 1

Prova il seguente esempio per visualizzare tutti i record della tabella dbprova_tbl.

<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
  die('Connessione impossibile. Errore: ' . mysql_error());
}
$sql = 'SELECT prova_id, prova_title, 
               prova_author, submission_date
        FROM dbprova_tbl';

mysql_select_db('DBPROVA');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
  die('Prelievo dei dati impossibile. Errore: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
    echo "Tutorial ID :{$row['prova_id']}  <br> ".
         "Title: {$row['prova_title']} <br> ".
         "Author: {$row['prova_author']} <br> ".
         "Submission Date : {$row['submission_date']} <br> ".
         "--------------------------------<br>";
} 
echo "Prelievo dei dati riuscito\n";
mysql_close($conn);
?>

Il contenuto delle righe viene prima assegnato alla variabile $row e poi vengono stampati i vari elementi della riga.

NOTA: Ricordare di mettere sempre tra parentesi graffe ciascun valore della matrice che si desidera inserire in una stringa.

Nell'esempio precedente viene utilizzata la costante MYSQL_ASSOC come secondo argomento della funzione mysql_fetch_array(), per fare in modo che restituisca la riga come un array associativo. Con un array associativo è possibile accedere al campo utilizzandone il nome invece di un indice numerico.

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

Esempio 2

Prova il seguente esempio per visualizzare tutti i record della tabella dbprova_tbl usando la funzione mysql_fetch_assoc().

<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
  die('Connessione impossibile. Errore: ' . mysql_error());
}
$sql = 'SELECT prova_id, prova_title, 
               prova_author, submission_date
        FROM dbprova_tbl';

mysql_select_db('DBPROVA');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
  die('Prelievo dei dati impossibile. Errore: ' . mysql_error());
}
while($row = mysql_fetch_assoc($retval)) {
    echo "Tutorial ID :{$row['prova_id']}  <br> ".
         "Title: {$row['prova_title']} <br> ".
         "Author: {$row['prova_author']} <br> ".
         "Submission Date : {$row['submission_date']} <br> ".
         "--------------------------------<br>";
} 
echo "Prelievo dei dati riuscito\n";
mysql_close($conn);
?>

È possibile utilizzare la costante MYSQL_NUM come secondo argomento della funzione mysql_fetch_array(), questo permetterà alla funzione di restituire un array con indice numerico.

Esempio 3

Visualizzazione di tutti record della tabella dbprova_tbl con l'uso dell'argomento MYSQL_NUM.

<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
  die('Connessione impossibile. Errore: ' . mysql_error());
}
$sql = 'SELECT prova_id, prova_title, 
               prova_author, submission_date
        FROM dbprova_tbl';

mysql_select_db('DBPROVA');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
  die('Prelievo dei dati impossibile. Errore: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
    echo "Tutorial ID :{$row[0]}  <br> ".
         "Title: {$row[1]} <br> ".
         "Author: {$row[2]} <br> ".
         "Submission Date : {$row[3]} <br> ".
         "--------------------------------<br>";
}
echo "Prelievo dei dati riuscito\n";
mysql_close($conn);
?>

Tutti e 3 gli esempi precedenti produrranno lo stesso risultato.


Rilascio della memoria

Estratti tutti i risultati non bisogna dimenticare che PHP sta conservando ancora nella sua memoria tutti i record restituiti dalla query, è quindi consigliato liberare tale memoria. Questo può essere fatto utilizzando la funzione mysql_free_result(). Di seguito un esempio per mostrare come si deve fare.

Esempio 4

<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
  die('Connessione impossibile. Errore: ' . mysql_error());
}
$sql = 'SELECT prova_id, prova_title, 
               prova_author, submission_date
        FROM dbprova_tbl';

mysql_select_db('DBPROVA');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
  die('Prelievo dei dati impossibile. Errore: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
    echo "Tutorial ID :{$row[0]}  <br> ".
         "Title: {$row[1]} <br> ".
         "Author: {$row[2]} <br> ".
         "Submission Date : {$row[3]} <br> ".
         "--------------------------------<br>";
}
mysql_free_result($retval);
echo "Prelievo dei dati riuscito\n";
mysql_close($conn);
?>

Per il recupero dei dati è possibile scrivere espressioni SQL complesse quanto serve, ma la procedura rimarrà sempre la stessa come nei casi visti in precedenza.

















Introduzione
Installazione
Amministrazione
MySQL e PHP
Gestione database
Tipi di dati
Gestione tabelle
Query insert
Query select
Query update e delete
Clausola where
Clausola like e regexp
Clausola order by
Clausola join
Il valore NULL
Le transazioni
Il comando ALTER
Gli indici
Tabelle temporanee e cloni
Info sul database
Generazione di sequenze
Gestione dei duplicati
Iniezione di codice SQL
Export / Import



Peccato confessato mezzo perdonato.
Proverbio

Valid CSS!
pagina generata in 0.001 secondi