📅  最后修改于: 2020-11-27 06:16:46             🧑  作者: Mango
我们已经看到了SQL SELECT命令从MySQLi表中获取数据。我们可以使用称为WHERE子句的条件子句来过滤结果。使用WHERE子句,我们可以指定选择条件以从表中选择所需的记录。
这是带有WHERE子句的SELECT命令的通用SQL语法,用于从MySQLi表中获取数据-
SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
您可以使用WHERE子句使用一个或多个用逗号分隔的表来包含各种条件,但是WHERE子句是SELECT命令的可选部分。
您可以使用WHERE子句指定任何条件。
您可以使用AND或OR运算符指定多个条件。
WHERE子句可以与DELETE或UPDATE SQL命令一起使用,也可以指定条件。
WHERE子句的作用类似于任何编程语言中的if条件。该子句用于将给定值与MySQLi表中可用的字段值进行比较。如果外部的给定值等于MySQLi表中的可用字段值,则它将返回该行。
这是运算符的列表,可与WHERE子句一起使用。
假设字段A持有10,字段B持有20,则-
Operator | Description | Example |
---|---|---|
= | Checks if the values of two operands are equal or not, if yes then condition becomes true. | (A = B) is not true. |
!= | Checks if the values of two operands are equal or not, if values are not equal then condition becomes true. | (A != B) is true. |
> | Checks if the value of left operand is greater than the value of right operand, if yes then condition becomes true. | (A > B) is not true. |
< | Checks if the value of left operand is less than the value of right operand, if yes then condition becomes true. | (A < B) is true. |
>= | Checks if the value of left operand is greater than or equal to the value of right operand, if yes then condition becomes true. | (A >= B) is not true. |
<= | Checks if the value of left operand is less than or equal to the value of right operand, if yes then condition becomes true. | (A <= B) is true. |
当您想从表中获取选定的行时,WHERE子句非常有用,尤其是当您使用MySQLi Join时。连接将在另一章中讨论。
使用主键搜索记录以加快搜索速度是一种常见的做法。
如果给定条件与表中的任何记录都不匹配,则查询将不返回任何行。
这将使用带有WHERE子句的SQL SELECT命令从MySQLi表tutorials_inf中获取所选数据。
以下示例将返回tutorials_inf表中名称为sai的所有记录-
root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql>SELECT * from tutorials_inf where name = 'sai';
+----+------+
| id | name |
+----+------+
| 1 | SAI |
+----+------+
1 row in set (0.00 sec)
mysql>
除非对字符串执行LIKE比较,否则比较不区分大小写。您可以使用BINARY关键字使搜索区分大小写,如下所示:
root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_inf \WHERE BINARY name = 'sai';
Empty set (0.02 sec)
mysql>
您可以在WHERE CLAUSE中使用相同的SQL SELECT命令到PHP函数mysqli_query()中。
以下示例将返回tutorials_inf表中名称为sai的所有记录-
';
$sql = 'SELECT * from tutorials_inf where name="sai"';
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
echo "Name: " . $row["name"]. "
";
}
} else {
echo "0 results";
}
mysqli_close($conn);
?>
样本输出应该像这样-
Connected successfully
Name: SAI