MySQLi - LIKE子句

我们已经看到SQL SELECT 命令从MySQLi表中获取数据.我们还可以使用一个名为 WHERE 子句的条件子句来选择所需的记录.

带有等号(=)的WHERE子句在我们想做的地方工作正常完全符合.就像"name ='sai'".但是可能需要我们想要过滤掉名称应该包含"johar"的所有结果.这可以使用SQL LIKE 子句和WHERE子句来处理.

如果SQL LIKE子句与%字符一起使用,那么它将像元字符一样工作(*)在UNIX中,在命令提示符下列出所有文件或目录.

没有%字符,LIKE子句与等号和WHERE子句非常相似.

语法

以下是SELECT命令的通用SQL语法以及从MySQLi表中获取数据的LIKE子句 :

 
 SELECT field1,field2,... fieldN table_name1,table_name2 ... 
 WHERE field1 LIKE condition1 [AND [OR]] filed2 ='somevalue'


  • 您可以使用WHERE子句指定任何条件.

  • 您可以将LIKE子句与WHERE子句一起使用.

  • 您可以使用LIKE子句代替等号.

  • 当LIKE与%符号一起使用时,它将像我一样工作ta字符搜索.

  • 您可以使用 AND OR 运算符指定多个条件.

  • WHERE ... LIKE子句可以与DELETE或UPDATE SQL命令一起使用来指定条件.

在命令提示符下使用LIKE子句

这将使用带有WHERE ... LIKE子句的SQL SELECT命令从MySQLi表中获取所选数据tutorials_inf.

示例

以下示例将返回 tutorials_inf 表中的所有记录,其作者姓名以

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>


在PHP脚本中使用LIKE子句

您可以在PHP函数中使用类似WHERE ... LIKE子句的语法 mysqli_query()的.此函数用于执行SQL命令,如果WHERE ... LIKE子句与SELECT命令一起使用,则可以使用另一个PHP函数 mysqli_fetch_array()来获取所有选定的数据.

但是如果WHERE ... LIKE子句与DELETE或UPDATE命令一起使用,则不需要进一步的PHP函数调用.

示例

尝试以下示例以返回 tutorials_inf 表格中包含 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);
?>

示例输出应该像这样

Connected successfully
johar