dal 2015 - visita n. 675
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



Una stupida coerenza è l'ossessione di piccole menti, adorata da piccoli uomini politici e filosofi e teologi. Con la coerenza una grande anima non ha, semplicemente, nulla a che fare. Tanto varrebbe che si occupasse della sua ombra sul muro. Dite quello che pensate ora con parole dure, e dite domani quello che il domani penserà con parole altrettanto dure, per quanto ciò possa essere in contraddizione con qualunque cosa abbiate detto oggi.
Ralph Waldo Emerson

Valid CSS!
pagina generata in 0.001 secondi