Php mysql查询中的逗号分隔搜索

Php mysql查询中的逗号分隔搜索,php,mysql,sql,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 r

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

$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查询中实现这一点吗?

这里是:

$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)

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

所以不是

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

搜索速度会快得多。

在数组中使用php这将简化您的问题

是的,您是对的,我可以通过这种方式实现。但我刚刚在这里举了一个例子。我的实际查询在php文件中有200行长。因此,如果我按照上述方式做,我将不得不做很多更改,可能会导致重新测试整个功能等。因此,我希望有某种方法(regex或全文搜索等)可以处理我在查询中的问题,而不是…你可以创建一个有名称的诱人的,然后离开加入用户?作为一种旁白,使用未检查的用户输入(例如,在查询中直接获取或发布数据)是一个非常糟糕的主意,这会让您面临SQL注入。至少,使用
mysql\u real\u escape\u string()
清理用户输入。