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()
清理用户输入。