如何为php MySQL解决这个简单的搜索查询

时间:2011-03-12 18:26:30

标签: php mysql

我有一个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");

它给了我正确的结果...... 但我也想分别将我的查询字符串与描述和详细信息字段匹配。 请帮帮我。

2 个答案:

答案 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");