MySQLi - clausola LIKE

Abbiamo visto SQL SELECTcomando per recuperare i dati dalla tabella MySQLi. Possiamo anche usare una clausola condizionale chiamataWHERE clausola per selezionare i record richiesti.

Una clausola WHERE con segno di uguale (=) funziona bene dove vogliamo fare una corrispondenza esatta. Come se "nome = 'sai'". Ma potrebbe esserci un requisito in cui si desidera filtrare tutti i risultati in cui il nome deve contenere "johar". Questo può essere gestito utilizzando SQLLIKE clausola insieme alla clausola WHERE.

Se la clausola SQL LIKE viene utilizzata insieme ai caratteri%, funzionerà come un metacarattere (*) in UNIX mentre elenca tutti i file o le directory al prompt dei comandi.

Senza un carattere%, la clausola LIKE è molto simile al segno di uguale insieme alla clausola WHERE.

Sintassi

Ecco la sintassi SQL generica del comando SELECT insieme alla clausola LIKE per recuperare i dati dalla tabella MySQLi -

SELECT field1, field2,...fieldN table_name1, table_name2...
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
  • È possibile specificare qualsiasi condizione utilizzando la clausola WHERE.

  • È possibile utilizzare la clausola LIKE insieme alla clausola WHERE.

  • È possibile utilizzare la clausola LIKE al posto del segno di uguale.

  • Quando LIKE viene utilizzato insieme al segno%, funzionerà come una ricerca di meta caratteri.

  • È possibile specificare più di una condizione utilizzando AND o OR operatori.

  • Una clausola WHERE ... LIKE può essere utilizzata insieme al comando SQL DELETE o UPDATE anche per specificare una condizione.

Utilizzo della clausola LIKE al prompt dei comandi

Questo utilizzerà il comando SQL SELECT con la clausola WHERE ... LIKE per recuperare i dati selezionati dalla tabella MySQLi tutorials_inf.

Esempio

L'esempio seguente restituirà tutti i record da tutorials_inf tabella per la quale il nome dell'autore termina con johar -

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> SELECT * from tutorials_inf 
   -> WHERE name LIKE '%johar';
+----+-------+
| id | name  |
+----+-------+
|  2 | johar |
+----+-------+
1 row in set (0.00 sec)

mysql>

Utilizzo della clausola LIKE all'interno dello script PHP

È possibile utilizzare una sintassi simile della clausola WHERE ... LIKE nella funzione PHP mysqli_query(). Questa funzione viene utilizzata per eseguire il comando SQL e successivamente un'altra funzione PHPmysqli_fetch_array() può essere utilizzato per recuperare tutti i dati selezionati se la clausola WHERE ... LIKE viene utilizzata insieme al comando SELECT.

Ma se la clausola WHERE ... LIKE viene utilizzata con il comando DELETE o UPDATE, non sono necessarie ulteriori chiamate di funzione PHP.

Esempio

Prova il seguente esempio per restituire tutti i record da tutorials_inf tabella per cui nome contiene johar -

<?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 LIKE "%johar%"';
   $result = mysqli_query($conn, $sql);
   $row = mysqli_fetch_array($result,MYSQLI_ASSOC);
   
   printf ("%s \n",$row["name"]);
   mysqli_free_result($result);
   mysqli_close($conn);
?>

L'output di esempio dovrebbe essere così:

Connected successfully
johar