MySQLi - Clause LIKE

Nous avons vu SQL SELECTcommande pour récupérer les données de la table MySQLi. Nous pouvons également utiliser une clause conditionnelle appeléeWHERE clause pour sélectionner les enregistrements requis.

Une clause WHERE avec le signe égal (=) fonctionne bien là où nous voulons faire une correspondance exacte. Comme si "name = 'sai'". Mais il peut y avoir une exigence où nous voulons filtrer tous les résultats où le nom doit contenir "johar". Cela peut être géré en utilisant SQLLIKE clause avec la clause WHERE.

Si la clause SQL LIKE est utilisée avec les caractères%, elle fonctionnera comme un méta caractère (*) sous UNIX tout en répertoriant tous les fichiers ou répertoires à l'invite de commande.

Sans le caractère%, la clause LIKE est très similaire au signe égal avec la clause WHERE.

Syntaxe

Voici la syntaxe SQL générique de la commande SELECT avec la clause LIKE pour récupérer les données de la table MySQLi -

SELECT field1, field2,...fieldN table_name1, table_name2...
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
  • Vous pouvez spécifier n'importe quelle condition à l'aide de la clause WHERE.

  • Vous pouvez utiliser la clause LIKE avec la clause WHERE.

  • Vous pouvez utiliser la clause LIKE à la place du signe égal.

  • Lorsque LIKE est utilisé avec le signe%, cela fonctionnera comme une recherche de méta-caractères.

  • Vous pouvez spécifier plusieurs conditions en utilisant AND ou OR les opérateurs.

  • Une clause WHERE ... LIKE peut être utilisée avec la commande SQL DELETE ou UPDATE également pour spécifier une condition.

Utilisation de la clause LIKE à l'invite de commandes

Cela utilisera la commande SQL SELECT avec la clause WHERE ... LIKE pour récupérer les données sélectionnées de la table MySQLi tutorials_inf.

Exemple

L'exemple suivant renverra tous les enregistrements de tutorials_inf table dont le nom de l'auteur se termine par 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>

Utilisation de la clause LIKE dans un script PHP

Vous pouvez utiliser la syntaxe similaire de la clause WHERE ... LIKE dans la fonction PHP mysqli_query(). Cette fonction est utilisée pour exécuter la commande SQL et plus tard une autre fonction PHPmysqli_fetch_array() peut être utilisé pour récupérer toutes les données sélectionnées si la clause WHERE ... LIKE est utilisée avec la commande SELECT.

Mais si la clause WHERE ... LIKE est utilisée avec la commande DELETE ou UPDATE, aucun autre appel de fonction PHP n'est requis.

Exemple

Essayez l'exemple suivant pour renvoyer tous les enregistrements de tutorials_inf table dont le nom contient 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'exemple de sortie devrait être comme ceci -

Connected successfully
johar