我想制作一个php搜索查询。首先,我放了一个句子,然后将每个单词放到$name
,然后我把$name
做一个查询来匹配我数据库中存在的所有名字。然后回声部分$row['name'][$i]
有一些单词重复。
例如:我的数据库中的句子是:Marc Gasol is the brother of Pau Gasol
和Gasol
,所以匹配词Gasol
apearl 2次。如何echo $row['name'][$i];
并且只获得一个Gasol
?感谢,
$query = mysql_query("SELECT * FROM books WHERE name like '$name[0]' OR name like '$name[1]' OR name like '$name[2]' OR name like '$name[3]' ");
$i = 0;
while($row = mysql_fetch_array($query)) {
echo $row['name'][$i];
$i++;
}
答案 0 :(得分:2)
$sentence = "Marc Gasol is the brother of Pau Gasol";
$words = preg_split("/\s+/", $sentence);
//this will uniqueify your value set
$uniqueWords = array_keys(array_flip($words));
foreach($uniqueWords as $word){
$parts[] = "name like '%".mysql_real_escape_string($word)."%'";
}
$where = implode(" OR ", $parts);
$query = mysql_query("SELECT * FROM books WHERE $where ");
$i = 0;
while($row = mysql_fetch_array($query)) {
echo $row['name'][$i];
$i++;
}
答案 1 :(得分:0)
您可以在数组中运行另一个快速循环并删除所有重复的单词,然后再继续执行sql查询,这样您就不会首先搜索名称两次。如果我理解你想要做什么,那应该有用。