我正在使用分页的搜索脚本,但无法使其正常工作。
这是我的问题:
$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时显然。任何人都知道为什么会发生这种情况?
答案 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注入。