2013-10-29 68 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; 

您是每个循环中的回显列表。我认为是这样。