2015-12-29 56 views
0

我有一個表'用戶'有兩列(ID,全名)我創建了一個搜索框使用PHP之後,我搜索如何使其按相關性排序我發現解決方案但所以如果有包含約翰·史密斯在全名三行然後在這裏給我只有一個結果它不能正常工作時表MySQL的 - 命令的情況下,當不工作

id | full_name 
1 | John Smith 
2 | John Smith 
3 | John Smith 

,這裏是我的代碼

$find = $_GET['q']; 
$values=explode(" ", $find); 
$sql="SELECT * FROM users WHERE"; 
$i=0; 
foreach($values as $v) 
{ 
$v=trim($v); 
if($i==0) 
{ 
$sql.=" full_name LIKE '%$v%'"; 
} 
else 
{ 
$sql.=" OR full_name LIKE '%$v%'"; 
} 

$i++; 
} 
$sql.="GROUP BY full_name ORDER BY CASE WHEN full_name like '$find %' THEN 0 
      WHEN full_name like '$find%' THEN 1 
      WHEN full_name like '% $find%' THEN 2 
      ELSE 3 
     END, full_name"; 
$query3 = mysql_query($sql) or die(mysql_error()); 
while ($row3 = mysql_fetch_array($query3)) { 
echo $row3['full_name']."<br/>"; 
} 

所以我的問題是當我搜索約翰它給我只有一個結果是約翰·史密斯,而我希望它給我

  • 約翰·史密斯
  • 約翰·史密斯
  • 約翰·史密斯

我希望得到任何幫助

+0

現在你正在改變你的代碼改變你使用的擴展。由於mysql_ *自PHP 5.5起棄用且從PHP 7.0中刪除,請使用[mysqli](http://php.net/manual/en/book.mysqli.php)或[PDO](http://php.net) /manual/en/book.pdo.php)。並且在處理用戶輸入時,您的代碼也可以使用[預處理語句](http://stackoverflow.com/q/60174/5396496)進行SQL注入。請這樣做,否則你會後悔的。 – BRoebie

+0

感謝您的建議,我現在就在我的整個網站 –

回答

3

刪除GROUP BY full_name它將John Smith名稱分組在一起。

+1

這是好的。 – devpro

+1

非常感謝你爲我節省了一天<3,Pfff這個規則說它需要4分鐘才能接受答案 –

+0

那麼......接受它的時候可以,哈哈 – Clay

相關問題