2013-10-29 113 views
0

我的MySQL的代碼返回重複值當我使用下面的代碼:SELECT DISTINCT返回重複

首先,這裏是我的代碼:

$customer = htmlspecialchars($_GET['customer']); 

$STH = $DBH->query("SELECT DISTINCT customer FROM table WHERE customer LIKE 
    '$customer%' LIMIT 4"); 
$STH->setFetchMode(PDO::FETCH_ASSOC); 

while($row = $STH->fetch()){ 
    $customer_name = $row['customer']; 
    $list .= "<p>" .$customer_name. "</p>"; 

    echo $list; 
} 

是不是有什麼毛病我的SELECT語句?

我讀過,當空間等數據條目存在細微差異時,可以返回重複值。我檢查並重新檢查了條目,它們始終完全相同。

+0

你,當你路過'$ customer'直接查詢錯誤的開始 –

+3

看到正在返回什麼可以幫助... – sevenseacat

+0

你可以在phpMyAdmin或類似的東西中運行相同的查詢,並檢查你是否得到預期的結果? – Latheesan

回答

1

您每次迭代都會追加到$list,然後每次都回應整個事情。因此,如果該查詢返回PERSON1,PERSON2和Person3可能,這將是你的輸出:

Person1 # End of loop iteration 1 
Person1 
Person2 # End of loop iteration 2 
Person1 
Person2 
Person3 # End of loop iteration 3 
2

試試這個。

$customer = htmlspecialchars($_GET['customer']); 

$STH = $DBH->query("SELECT DISTINCT customer FROM table WHERE customer LIKE 
    '$customer%' LIMIT 4"); 
$STH->setFetchMode(PDO::FETCH_ASSOC); 

while($row = $STH->fetch()){ 
    $customer_name = $row['customer']; 
    $list .= "<p>" .$customer_name. "</p>"; 
} 
echo $list; 

您是每個循環中的回顯列表。我認爲是這樣。