逗号分隔搜索mysql查询

时间:2012-04-07 10:12:18

标签: php mysql sql

我的网站中有搜索机制。为此我写了一个大的条件查询。

$sql = "select * from users where 
keyword like '%".$_POST['search']."%' 
OR name like '%".$_POST['search']."%'";

现在,我想我在网站上有以下数据:

ID    Name    Keyword
1     Sanjay  sanjay, surani
2     Ankit   ankit, shah
3     Ravi    ravi, kotwani

现在,我需要结果,当用户写"sanjay, shah" ($_POST['search'] = 'sanjay, shah')时,应显示记录1和2.

我可以在单个mysql查询中实现这个吗?

3 个答案:

答案 0 :(得分:2)

如果您要重新构建关键字字段并将其拆分以使其中只有一个名称,该怎么办?

所以而不是

ID    Name    Keyword
1     Sanjay  sanjay, surani
2     Ankit   ankit, shah
3     Ravi    ravi, kotwani

你有

ID    Name    KeyID
1     Sanjay  1
2     Sanjay  2
3     Ankit   3
4     Ankit   4
5     Ravi    5
6     Ravi    6

KeyID Keyword
1     sanjay
2     surani
3     ankit
4     shah
5     ravi
6     kotwani

搜索会更快。

答案 1 :(得分:0)

这里是:

$query_elems = explode(",", $query);
$searches = array();
foreach($query_elems as $qe){
    $searches[] = "keyword like '%" . trim($qe) . "%' or name like '%" . trim($qe) . "%'";
}
$query = "select * from users where " . implode(" or ",$searches);
$result = mysql_query($query)

答案 2 :(得分:0)

使用php in_array这将简化您的问题