0

我的网站上有一个运行良好的搜索框,但我希望它在表格中搜索多个字段。例如,我在表格中有 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%'";

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

感激地收到帮助。

理查德

4

3 回答 3

1

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

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

我还包括了一个分隔符,所以搜索查询应该只匹配一个字段。

于 2013-08-30T21:08:58.647 回答
1
$sqlcommand = "
    SELECT id, page_title, url, text1, text2, text3 
    FROM pages 
    WHERE text1 LIKE '%$searchquery%' OR text2 LIKE '%$searchquery%' OR text3 LIKE '%$searchquery%'
";

^这行得通吗?

于 2013-08-30T21:09:49.223 回答
0

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

选择 id、page_title、url、text1、text2、text3
从页面
WHERE text1 LIKE '%searchfield1%'
    AND text2 LIKE '%searchfield2%'
    AND text3 LIKE '%searchfield3%'

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

$sqlcommand = "......."; 就像你在你的问题中所说的那样。

或者,如果您在同一个确切的输入字段中搜索所有三列,您可以使用:

选择 id、page_title、url、text1、text2、text3
从页面
WHERE text1 LIKE '%searchquery%'
    AND text2 LIKE '%searchquery%'
    AND text3 LIKE '%searchquery%'
于 2013-08-30T21:13:47.440 回答