1

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

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

4

3 回答 3

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

搜索会快得多。

于 2012-04-07T10:56:46.723 回答
0

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

于 2012-04-07T11:27:12.323 回答
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)
于 2012-04-07T10:26:30.193 回答