2012-10-24 91 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这个答案只会隐藏问题;找出为什么你会得到比预期更多的结果是很重要的,否则随着时间的推移,这将会爆炸,你不知道为什么你的数据库正在放慢速度。 –