MySQLi - clausola WHERE
Abbiamo visto SQL SELECTcomando per recuperare i dati dalla tabella MySQLi. Possiamo usare una clausola condizionale chiamataWHEREclausola per filtrare i risultati. Utilizzando la clausola WHERE, è possibile specificare un criterio di selezione per selezionare i record richiesti da una tabella.
Sintassi
Ecco la sintassi SQL generica del comando SELECT con la clausola WHERE per recuperare i dati dalla tabella MySQLi -
SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
È 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 specificare qualsiasi condizione utilizzando la clausola WHERE.
È possibile specificare più di una condizione utilizzando AND o OR operatori.
Una clausola WHERE può essere utilizzata insieme al comando SQL DELETE o UPDATE anche per specificare una condizione.
Il WHEREla clausola funziona come una condizione if in qualsiasi linguaggio di programmazione. Questa clausola viene utilizzata per confrontare il valore dato con il valore del campo disponibile nella tabella MySQLi. Se il valore fornito dall'esterno è uguale al valore del campo disponibile nella tabella MySQLi, restituisce quella riga.
Ecco l'elenco degli operatori, che possono essere utilizzati con WHERE clausola.
Supponiamo che il campo A abbia 10 e il campo B ne abbia 20, quindi -
Operatore | Descrizione | Esempio |
---|---|---|
= | Controlla se i valori di due operandi sono uguali o meno, in caso affermativo la condizione diventa vera. | (A = B) non è vero. |
! = | Controlla se i valori di due operandi sono uguali o meno, se i valori non sono uguali la condizione diventa vera. | (A! = B) è vero. |
> | Controlla se il valore dell'operando sinistro è maggiore del valore dell'operando destro, in caso affermativo la condizione diventa vera. | (A> B) non è vero. |
< | Controlla se il valore dell'operando sinistro è inferiore al valore dell'operando destro, in caso affermativo la condizione diventa vera. | (A <B) è vero. |
> = | Controlla se il valore dell'operando sinistro è maggiore o uguale al valore dell'operando destro, in caso affermativo la condizione diventa vera. | (A> = B) non è vero. |
<= | Controlla se il valore dell'operando sinistro è minore o uguale al valore dell'operando destro, in caso affermativo la condizione diventa vera. | (A <= B) è vero. |
La clausola WHERE è molto utile quando vuoi recuperare le righe selezionate da una tabella, specialmente quando usi MySQLi Join. I join sono discussi in un altro capitolo.
È pratica comune cercare i record utilizzando Primary Key per velocizzare la ricerca.
Se una determinata condizione non corrisponde a nessun record nella tabella, la query non restituirà alcuna riga.
Recupero dei dati dal prompt dei comandi
Questo utilizzerà il comando SQL SELECT con la clausola WHERE per recuperare i dati selezionati dalla tabella MySQLi tutorials_inf.
Esempio
L'esempio seguente restituirà tutti i record da tutorials_inf tabella per cui il nome è sai -
[email protected]# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql>SELECT * from tutorials_inf where name = 'sai';
+----+------+
| id | name |
+----+------+
| 1 | SAI |
+----+------+
1 row in set (0.00 sec)
mysql>
A meno che non si esegua un file LIKEconfronto su una stringa, il confronto non fa distinzione tra maiuscole e minuscole. Puoi rendere sensibile il tuo caso di ricerca usandoBINARY parola chiave come segue -
[email protected]# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_inf \WHERE BINARY name = 'sai';
Empty set (0.02 sec)
mysql>
Recupero dei dati utilizzando lo script PHP:
È possibile utilizzare lo stesso comando SQL SELECT con WHERE CLAUSE nella funzione PHP mysqli_query().
Esempio
L'esempio seguente restituirà tutti i record da tutorials_inf tabella per cui il nome è sai -
<?php
$dbhost = 'localhost:3306';
$dbuser = 'root';
$dbpass = '';
$dbname = 'TUTORIALS';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);
if(! $conn ) {
die('Could not connect: ' . mysqli_error());
}
echo 'Connected successfully<br>';
$sql = 'SELECT * from tutorials_inf where name="sai"';
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
echo "Name: " . $row["name"]. "<br>";
}
} else {
echo "0 results";
}
mysqli_close($conn);
?>
L'output di esempio dovrebbe essere così:
Connected successfully
Name: SAI