Query di selezione
La query si selezione consente di selezionare informazioni presenti nelle tabelle di una base di dati. La query di selezione è l'unica query che non altera lo stato del database.
Sintassi MySql
La sintassi della SELECT è la seguente:
Query di selezione
SELECT listaCampi FROM nomeTab WHERE condizioni
- listaCampi: è la lista dei campi della tabella che vogliamo selezionare, se li vogliamo selezionare tutti si può usare i carattre jolly *
- nomeTab: nome della tabella sulla quale vogliamo operare
- condizioni: condizioni sui campi
E' prassi scrivere le parole dell'SQL in maiuscolo.
Supponiamo di avere la seguente tabella utenti :
| id | username | password | |
|---|---|---|---|
| 1 | campione88 | campione88@libero.it | 1234qwer |
| 2 | lollo | lollo234@gmail.com | superPWD75!! |
| 3 | cippaLippa | albertoScala@gmail.com | pallino!! |
| 5 | malibuStacy | lisa.s@hotmail.com | sassofono |
| 6 | malibuStacy2 | waylon@smithers.name | eccellente |
Solitamente in una tabella di untenti la password non è in chiaro. Nelle tabelle solitamente c'è un campo che individua univocamente una riga, questo campo speciale è detto chiave primaria. Nella nostra tabella la chiave è il campo id.
esempio select
SELECT id,email FROM utenti WHERE username = 'lollo' AND password='superPWD75!!'
Il risultato di una query di slezione è UNA TABELLA.
Quello che c'è tra SELECT e FROM definisce il numero di colonne della tabella riusltato, le condizioni scritte nel WHERE incidono sul numero di righe.
In generale non sappiamo quante sono le righe della tabella risultato della query.
La query scritta sopra avrà il seguente risultato:
| id | |
|---|---|
| 2 | lollo234@gmail.com |
E' una tabella con due colonne e una riga.
Una query può produrre una tabella con zero righe. Può accadere sia quando la tabella è vuota sia quando le condizioni del WHERE non vengono soddisfatte da nessua riga.
Query di selezione nel PHP
Per lanciare una SELCT usando il PHP, bisogna utilizzare la funzione mysqli_query(). Prima di eseguire una query si deve aprire la connessione con il server.
query di selezione con PHP
//apriamo la connsessione
$link = mysqli_connect('127.0.0.1','root','','utenti');
//definiamo la query come una stringa
$query = "SELECT id,email FROM utenti"; //selzioniamo per intero le colonne id e email
//lanciamo la query e memorizziamo il risultato
$res=mysqli_query($link,$query);
//se la query va a buon fine dentro $res c'è una tabella
//se la query è scritta male dentro $res c'è false
if(!$res) die('Qualcosa è andato storto'); //die blocca l'esecuzione del codice
//se sono qui la query è scritta bene
if(mysqli_num_rows($res)>1){
//mysqli_num_rows mi dice quante righe ci sono in $res
//c'è almeno una riga
while ($row=mysqli_fetch_assoc($res){
//mysqli_fetch_assoc prende l'attuale riga di $res e la inserisce in un array associativo
//fatto questo si posiziona sulla riga successiva
//quando le righe sono finite torna false
echo $row['id'].' '.$row['email'];
//gli indici dell'array associativo sono i nomi dei campi sulla tabella
}
} else {
echo "la query non ha prodotto risultati";
}
Come detto il risultato di una SELECT è una tabella, quindi in $res c'è una tabella. Il PHP non può gestire una tabella tutta insieme, quindi si scorre la tabella una riga alla volta e si tratta ogni singola riga come un array associativo.
La gestione di una query di selezione avviene sempre nello stesso modo, quello che può cambiare è la query stessa, in base alla query ci si può aspettare un numero di risultati più delimitato.
