2012-10-24 87 views
0

我有一個功能正常的查詢,它爲預訂中的2個人提供了正確的結果,只是它發佈了四次結果而不是一次結果。查詢結果回顯結果四次

結果的回聲應該是:

合計選項: $ 94

相反,迴音是:

的選項

總計: $ 94

合計選項: $ 94

合計選項: $ 94

合計選項: $ 94

下面是相關的查詢和PHP代碼:

$optquery = "SELECT t.ibtp, c.ibt 
       FROM clients c, tourprices t 
       WHERE c.tourstart = t.tourstart 
       AND c.tourbk_id = t.tour_id"; 

    $optresult = $db->query($optquery); 

    while ($optrate = mysqli_fetch_assoc($optresult)) 
     { 

    $opttotalcost = $optrate['ibtp'] * $optrate['ibt']; 
     echo '<strong>',"Total for Options :</strong> $ {$opttotalcost}<br />"; 
} 

任何一個看到這個問題?

+0

當您自己運行查詢時,它會給出您期望的結果嗎? –

+0

確定數據庫中有什麼? –

+0

我認爲你的查詢可能會響應4個輸出。對於這個問題的超級快速解決方法是將回聲置於while循環之外。但我認爲你有一個應該解決的問題。在ibtp的tourprice表中, – u8sand

回答

3

數據庫中可能有四個相同的(對於那些列)行。嘗試使用SELECT DISTINCT,如下所示:

$optquery = "SELECT DISTINCT t.ibtp, c.ibt 
       FROM clients c, tourprices t 
       WHERE c.tourstart = t.tourstart 
       AND c.tourbk_id = t.tour_id"; 
+0

謝謝。這和上面的回聲將回聲置於while循環之外(也就是在回聲之前將結束大括號移到位置)。我查了一下,但只有一個IBT列和一個IBTp列。 SELECT DISTINCT是否可以防止導致此錯誤的事件? – shane

+0

儘管它可能不應該,除了IBT,我還有一個IBT_Shared列。這是否會成爲問題,儘管它不查詢IBT%? – shane

+0

@shane這個答案只會隱藏問題;找出爲什麼你會得到比預期更多的結果是很重要的,否則隨着時間的推移,這將會爆炸,你不知道爲什麼你的數據庫正在放慢速度。 –