2013-08-30 138 views
0

我在我的网站上有一个搜索框,效果很好,但我希望它搜索表中的多个字段。例如,表格中有3个部分,分别标记为text1,text2和text3。下面的代码适用于单个字段的搜索,但并不是全部都是3.MySQL PHP搜索多字段字段

 $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%'"; 

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

帮忙感激地收到了。

理查德

回答

1

您可以尝试concat'ing在一起:

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

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

+0

点上。谢谢 –

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

^这是否工作?

0

搜索多个列的表格,请确保您有WHERE子句中引用的,由运营商和失散的所有列,如下所示:

 
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%'