MySQL PHP搜索多个字段

时间:2013-08-30 21:06:14

标签: mysql search

我的网站上有一个搜索框,效果很好,但我想让它搜索表格中的多个字段。例如,我在表格中有3个部分用于标记为text1,text2和text3的文本。以下代码适用于搜索单个字段,但它不会查找所有3个字段。

        $sqlcommand = "SELECT id, page_title, url, text1, text2, text3 FROM pages WHERE text1 LIKE '%$searchquery%'";

我试过把它换成;

        $sqlcommand = "SELECT id, page_title, url, text1, text2, text3 FROM pages WHERE text1, text2, text3 LIKE '%$searchquery%'";

但这并没有产生结果,我已经尝试过了;

        $sqlcommand = "SELECT id, page_title, url, text1, text2, text3 FROM pages WHERE (text1, text2, text3) LIKE '%$searchquery%'";

其他人建议,但这产生了错误。

帮助感激地收到了。

理查德

3 个答案:

答案 0 :(得分:1)

你可以尝试将它们连在一起:

    $sqlcommand = "SELECT id, page_title, url, text1, text2, text3
                   FROM pages
                   WHERE concat(text1, ':', text2, ':', text3) LIKE '%$searchquery%'";

我还添加了分隔符,因此搜索查询应该只匹配一个字段。

答案 1 :(得分:1)

$sqlcommand = "
    SELECT id, page_title, url, text1, text2, text3 
    FROM pages 
    WHERE text1 LIKE '%$searchquery%' OR text2 LIKE '%$searchquery%' OR text3 LIKE '%$searchquery%'
";

^这有用吗?

答案 2 :(得分:0)

要搜索表中的多个列,请确保在WHERE子句中引用了所有列,并以运算符AND分隔,如下所示:

select id, page_title, url, text1, text2, text3
FROM pages
WHERE   text1 LIKE '%searchfield1%'
    AND text2 LIKE '%searchfield2%'
    AND text3 LIKE '%searchfield3%'

当然,您需要将此查询放在php格式的脚本中,可能是:

$ sqlcommand =“..................”;就像你在问题中一样。

或者,如果要在同一输入字段上搜索所有三列,则可以使用:

select id, page_title, url, text1, text2, text3
FROM pages
WHERE   text1 LIKE '%searchquery%'
    AND text2 LIKE '%searchquery%'
    AND text3 LIKE '%searchquery%'