SQL查询条件不起作用

时间:2014-08-17 19:33:02

标签: 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时显然。任何人都知道为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

使用括号

$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";

原因是AND是强大的"比OR(在数学中,乘法比加法更强:3 * 5 + 3 = 15 + 3 = 18)。

顺便说一下。请确保正确转义$search,否则您允许SQL注入。

相关问题