PHP mysql查询判断并不回显重复部分

时间:2011-02-22 23:11:46

标签: php mysql

我想制作一个php搜索查询。首先,我放了一个句子,然后将每个单词放到$name,然后我把$name做一个查询来匹配我数据库中存在的所有名字。然后回声部分$row['name'][$i]有一些单词重复。

例如:我的数据库中的句子是:Marc Gasol is the brother of Pau GasolGasol,所以匹配词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++; 
}       

2 个答案:

答案 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查询,这样您就不会首先搜索名称两次。如果我理解你想要做什么,那应该有用。