MySQLi - cláusula LIKE

Vimos SQL SELECTcomando para buscar dados da tabela MySQLi. Também podemos usar uma cláusula condicional chamadaWHERE cláusula para selecionar os registros necessários.

Uma cláusula WHERE com sinal de igual (=) funciona bem onde queremos fazer uma correspondência exata. Como se "nome = 'sai'". Mas pode haver um requisito em que queremos filtrar todos os resultados em que o nome deve conter "johar". Isso pode ser tratado usando SQLLIKE cláusula junto com a cláusula WHERE.

Se a cláusula SQL LIKE for usada junto com os caracteres%, ela funcionará como um metacaractere (*) no UNIX ao listar todos os arquivos ou diretórios no prompt de comando.

Sem um caractere%, a cláusula LIKE é muito semelhante ao sinal de igual junto com a cláusula WHERE.

Sintaxe

Aqui está a sintaxe SQL genérica do comando SELECT junto com a cláusula LIKE para buscar dados da tabela MySQLi -

SELECT field1, field2,...fieldN table_name1, table_name2...
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
  • Você pode especificar qualquer condição usando a cláusula WHERE.

  • Você pode usar a cláusula LIKE junto com a cláusula WHERE.

  • Você pode usar a cláusula LIKE no lugar do sinal de igual.

  • Quando LIKE é usado junto com o sinal%, ele funcionará como uma pesquisa de metacaracteres.

  • Você pode especificar mais de uma condição usando AND ou OR operadores.

  • Uma cláusula WHERE ... LIKE pode ser usada junto com o comando DELETE ou UPDATE SQL também para especificar uma condição.

Usando a cláusula LIKE no prompt de comando

Isso usará o comando SQL SELECT com a cláusula WHERE ... LIKE para buscar os dados selecionados da tabela tutorials_inf do MySQLi.

Exemplo

O exemplo a seguir retornará todos os registros de tutorials_inf tabela para a qual o nome do autor termina com johar -

[email protected]# 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>

Usando a cláusula LIKE dentro do script PHP

Você pode usar a sintaxe semelhante da cláusula WHERE ... LIKE na função PHP mysqli_query(). Esta função é usada para executar o comando SQL e posteriormente outra função PHPmysqli_fetch_array() pode ser usado para buscar todos os dados selecionados se a cláusula WHERE ... LIKE for usada junto com o comando SELECT.

Mas se a cláusula WHERE ... LIKE estiver sendo usada com o comando DELETE ou UPDATE, nenhuma chamada de função PHP adicional será necessária.

Exemplo

Experimente o seguinte exemplo para retornar todos os registros de tutorials_inf tabela para a qual o nome contém 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);
?>

O exemplo de saída deve ser assim -

Connected successfully
johar