SQL查询条件不工作


SQL query condition not working

我正在研究一个带有分页的搜索脚本,但无法使其正常工作。

这是我的查询:

$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注入。