我的网站中有搜索机制。为此我写了一个大的条件查询。
$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查询中实现这个吗?
答案 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这将简化您的问题