我的网站上有一个搜索框,效果很好,但我想让它搜索表格中的多个字段。例如,我在表格中有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%'";
其他人建议,但这产生了错误。
帮助感激地收到了。
理查德
答案 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%'