📅  最后修改于: 2020-11-27 06:18:07             🧑  作者: Mango
我们已经看到了SQL SELECT命令从MySQLi表中获取数据。我们还可以使用称为WHERE子句的条件子句来选择所需的记录。
在我们要进行精确匹配的地方,带有等号(=)的WHERE子句可以正常工作。如“ name =’sai’”。但是在某些情况下可能需要过滤掉名称应包含“ johar”的所有结果。可以使用SQL LIKE子句和WHERE子句来处理。
如果将SQL LIKE子句与% 字符一起使用,则它将在UNIX中像元字符(*)一样工作,同时在命令提示符下列出所有文件或目录。
如果没有%字符,则LIKE子句与WHERE子句非常等同于等号。
这是SELECT命令的通用SQL语法以及LIKE子句,用于从MySQLi表中获取数据-
SELECT field1, field2,...fieldN table_name1, table_name2...
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
您可以使用WHERE子句指定任何条件。
您可以将LIKE子句与WHERE子句一起使用。
您可以使用LIKE子句代替等号。
当LIKE与%符号一起使用时,它将像元字符搜索一样工作。
您可以使用AND或OR运算符指定多个条件。
WHERE … LIKE子句可以与DELETE或UPDATE SQL命令一起使用,还可以指定条件。
这将使用带有WHERE … LIKE子句的SQL SELECT命令从MySQLi表tutorials_inf中获取所选数据。
以下示例将返回tutorials_inf表中所有作者姓名以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>
您可以在PHP函数mysqli_query()中使用类似WHERE … LIKE子句的语法。如果WHERE … LIKE子句与SELECT命令一起使用,则此函数用于执行SQL命令,并且以后可以使用另一个PHP函数mysqli_fetch_array()来获取所有选定的数据。
但是,如果WHERE … LIKE子句与DELETE或UPDATE命令一起使用,则不需要进一步的PHP函数调用。
尝试以下示例,以返回名称包含johar的tutorials_inf表中的所有记录-
';
$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