我有一个MySQL表(table1),其中包含以下字段......
id,title,description,detail,category,status
我想要做的是使用常规的PHP搜索查询搜索这些字段...我现在的查询是...
$q = mysql_query("SELECT * FROM table1 WHERE title LIKE '%$q%' OR description LIKE '%$q%' OR detail LIKE '%$q%' AND category='$cateid' AND status='1' ORDER BY id DESC LIMIT 10");
$q
是我的搜索字符串,$cateid
是我的类别ID,状态为开/关(有效/无效)
现在,如果使用此查询得到结果,我得到5个结果,而我有查询字符串= foo,它只存在于一个条目而不是5 ...而且它还显示了状态='0'的行 当我将查询更改为
时$q = mysql_query("SELECT * FROM table1 WHERE title LIKE '%$q%' AND category='$cateid' AND status='1' ORDER BY id DESC LIMIT 10");
它给了我正确的结果...... 但我也想分别将我的查询字符串与描述和详细信息字段匹配。 请帮帮我。
答案 0 :(得分:2)
您需要在所有OR条件
周围加上括号()SELECT * FROM table1
WHERE (title LIKE '%$q%' OR description LIKE '%$q%' OR detail LIKE '%$q%')
AND category='$cateid' AND status='1' ORDER BY id DESC LIMIT 10
答案 1 :(得分:1)
我认为这是您需要的查询:
$q = mysql_query("SELECT * FROM table1 WHERE
(title LIKE '%$q%' OR detail LIKE '%$q%')
AND category='$cateid' AND status='1' ORDER BY id DESC LIMIT 10");