2012-05-16 58 views
1

我有這種奇怪的情況,我第一次遇到,並給予我在PHP中的新地位,它更令人困惑。在下面的查詢中,「請求者」這個詞重複的次數比它應該多。它重複的次數與它猜想的假設數量有關。如何防止在「回聲」命令中重複出現的單詞?

代碼:

$sql = "SELECT DISTINCT 
      allowed_permissions.post_id, 
      client_visit.client_reason, 
      accounts.full_name, 
      client_visit.type 
     from allowed_permissions 
      LEFT JOIN 
      client_visit 
       on allowed_permissions.post_id = client_visit.visit_id 
      LEFT JOIN 
      accounts 
       ON client_visit.system_id = accounts.system_id 
     where  
      allowed_permissions.allowed_to_view = '$uid'"; 

$result = mysql_query($sql); 

$query = mysql_query($sql) or die ("Error: ".mysql_error()); 

if ($result == "") { 
    echo ""; 
} 
echo ""; 

$rows = mysql_num_rows($result); 

if($rows == 0) { 

} elseif($rows > 0) { 
    while($row = mysql_fetch_assoc($query)) { 
    $reason = $row['client_reason']; 
    $person = $row['full_name']; 
    //Here the asked word gets repeated... 
    echo"$reason asked by $person"; 
    } 
} 
+3

你在while循環中有「問」這個詞,那麼問題是什麼? – Anas

+1

向我們顯示您的輸出和您的預期輸出。當你在mysql中運行查詢時,它是否會產生預期的結果? – Jrod

+0

看到,distinct將不會返回不同的'client_reason,full_name'集合,而是它將返回查詢 – Imdad

回答

1

讓人吃驚的是,只有「問道」是越來越重複......「通過問」就顯得更容易。您會得到一堆不包含$ reason或$ person的行,因此PHP將打印出文本文本並忽略這些變量。如果是這樣的話,你可以得到它周圍做這樣的事情:

if (! empty($reason) && ! empty($person)) { 
    echo $reason . ' asked by ' . $person; 
} 

問題能否解決,你還是應該處理查詢中的更大的問題。這顯然不完全正確。很難說如何在沒有更多上下文的情況下修復它。我猜你需要拋棄DISTINCT並實現一個GROUP BY子句。

+0

我的錯誤我的意思是要求。 – ariel

+0

工程就像一個魅力的傢伙!謝謝 – ariel