MySQL: seleziona Query
L'SQL SELECTviene utilizzato per recuperare i dati dal database MySQL. Puoi utilizzare questo comando al prompt mysql> così come in qualsiasi script come PHP.
Sintassi
Ecco la sintassi SQL generica del comando SELECT per recuperare i dati dalla tabella MySQL -
SELECT field1, field2,...fieldN
FROM table_name1, table_name2...
[WHERE Clause]
[OFFSET M ][LIMIT N]
È possibile utilizzare una o più tabelle separate da virgola per includere varie condizioni utilizzando una clausola WHERE, ma la clausola WHERE è una parte facoltativa del comando SELECT.
È possibile recuperare uno o più campi in un singolo comando SELECT.
È possibile specificare asterisco (*) al posto dei campi. In questo caso, SELECT restituirà tutti i campi.
È possibile specificare qualsiasi condizione utilizzando la clausola WHERE.
È possibile specificare un offset utilizzando OFFSETda dove SELECT inizierà a restituire i record. Per impostazione predefinita, l'offset inizia da zero.
Puoi limitare il numero di resi utilizzando il file LIMIT attributo.
Recupero dei dati da un prompt dei comandi
Questo utilizzerà il comando SQL SELECT per recuperare i dati dalla tabella MySQL tutorials_tbl.
Esempio
Il seguente esempio restituirà tutti i record da tutorials_tbl tavolo -
[email protected]# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
| 1 | Learn PHP | John Poul | 2007-05-21 |
| 2 | Learn MySQL | Abdul S | 2007-05-21 |
| 3 | JAVA Tutorial | Sanjay | 2007-05-21 |
+-------------+----------------+-----------------+-----------------+
3 rows in set (0.01 sec)
mysql>
Recupero dei dati utilizzando uno script PHP
È possibile utilizzare lo stesso comando SQL SELECT in una funzione PHP mysql_query(). Questa funzione viene utilizzata per eseguire il comando SQL e successivamente un'altra funzione PHPmysql_fetch_array()può essere utilizzato per recuperare tutti i dati selezionati. Questa funzione restituisce la riga come matrice associativa, matrice numerica o entrambi. Questa funzione restituisce FALSE se non ci sono più righe.
Il seguente programma è un semplice esempio che mostrerà come recuperare / visualizzare i record dal file tutorials_tbl tavolo.
Esempio
Il seguente blocco di codice visualizzerà tutti i record dalla tabella tutorials_tbl.
<?php
$dbhost = 'localhost:3036'; $dbuser = 'root';
$dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl'; mysql_select_db('TUTORIALS'); $retval = mysql_query( $sql, $conn );
if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Tutorial ID :{$row['tutorial_id']} <br> ".
"Title: {$row['tutorial_title']} <br> ". "Author: {$row['tutorial_author']} <br> ".
"Submission Date : {$row['submission_date']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn);
?>
Il contenuto delle righe viene assegnato alla variabile $ riga e i valori in quella 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_ASSOC viene utilizzato come secondo argomento della funzione PHP 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 matrice associativa.
Esempio
Il seguente esempio per visualizzare tutti i record dalla tabella tutorial_tbl 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 tutorial_id, tutorial_title, tutorial_author, submission_date
FROM tutorials_tbl';
mysql_select_db('TUTORIALS');
$retval = mysql_query( $sql, $conn ); if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_assoc($retval)) {
echo "Tutorial ID :{$row['tutorial_id']} <br> ". "Title: {$row['tutorial_title']} <br> ".
"Author: {$row['tutorial_author']} <br> ". "Submission Date : {$row['submission_date']} <br> ".
"--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
?>
Puoi anche usare la costante MYSQL_NUMcome secondo argomento della funzione PHP mysql_fetch_array (). Ciò farà sì che la funzione restituisca un array con l'indice numerico.
Esempio
Prova il seguente esempio per visualizzare tutti i record dalla tabella tutorials_tbl 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 tutorial_id, tutorial_title, tutorial_author, submission_date
FROM tutorials_tbl';
mysql_select_db('TUTORIALS');
$retval = mysql_query( $sql, $conn ); if(! $retval ) {
die('Could not get data: ' . 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 "Fetched data successfully\n";
mysql_close($conn);
?>
Tutti i tre esempi precedenti produrranno lo stesso risultato.
Liberare la memoria
È buona norma rilasciare la memoria del cursore alla fine di ogni istruzione SELECT. Questo può essere fatto usando la funzione PHPmysql_free_result(). Il seguente programma è un esempio per mostrare come dovrebbe 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 tutorial_id, tutorial_title, tutorial_author, submission_date
FROM tutorials_tbl';
mysql_select_db('TUTORIALS');
$retval = mysql_query( $sql, $conn ); if(! $retval ) {
die('Could not get data: ' . 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 "Fetched data successfully\n"; mysql_close($conn);
?>
Durante il recupero dei dati, puoi scrivere un codice complesso come preferisci, ma la procedura rimarrà la stessa di cui sopra.