php - SQL查询条件不起作用

标签 php mysql

我正在编写一个带有分页的搜索脚本,但无法让它正常工作。

这是我的查询:

$query = "SELECT COUNT(*) FROM server_data WHERE trash = '0' AND server_address LIKE '%$search%' OR title LIKE '%$search%' OR short_desc LIKE '%$search%'";

这是统计数据库中有多少条结果。

这是我对实际数据的查询:

$query = "SELECT * FROM server_data WHERE trash = '0' AND server_address LIKE '%$search%' OR title LIKE '%$search%' OR short_desc LIKE '%$search%' ORDER BY id DESC $limit";

出于某种原因,这会返回trash = 1 和trash = 0 的结果,而显然它应该只返回trash = 0 的结果。有人知道为什么会发生这种情况吗?

最佳答案

使用括号

$query = "SELECT * FROM server_data WHERE trash = '0' AND (server_address LIKE '%$search%' OR title LIKE '%$search%' OR short_desc LIKE '%$search%') ORDER BY id DESC $limit";

如果没有括号,您的查询将按如下方式计算:

$query = "SELECT * FROM server_data WHERE (trash = '0' AND server_address LIKE '%$search%') OR title LIKE '%$search%' OR short_desc LIKE '%$search%' ORDER BY id DESC $limit";

原因是 ANDOR “强”(就像数学中乘法比加法更强:3*5+3=15+ 3=18)。

顺便说一句。请确保 $search 已正确转义,否则您将允许 SQL 注入(inject)。

关于php - SQL查询条件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25352903/

相关文章:

php - Yii2 : How to write distinct SQL query?

php - 我可以根据变量的值和名称找出变量是否在全局空间中定义吗?

php - Paypal 电子邮件验证

php - PHP项目sql查询MYSQL列计数错误

mysql - 在 MySQL 中不重复地插入

mysql - 为什么 EXISTS() 总是返回 true?

MySQL数据库UPDATE LIKE查询错误

php - 将 CDN 用于 js 和类似资源与本地相比更好吗?

php - session_start() 在表单提交后导致空的 $_POST

javascript - $result->fetch_all(MYSQLI_ASSOC) 不返回任何内容