在while循环中添加值

时间:2011-03-03 16:12:58

标签: php mysql function sum while-loop

通过以下代码中的第一个查询,我正在寻找在第二场比赛中在柏林进行的检查。

对于第二个查询,我想为每个检查提供分数。

正如您将看到我正在使用函数SUM。但是,假设我有2次检查,每次检查的点数为50.好吧,不用回显100,用这段代码我回显5050

它出了什么问题?

非常感谢

该守则已得到纠正和运作,只是有些人需要这样做。感谢所有

       $querya = "SELECT * FROM checkins where gamesid=2 and city='Berlin'";
 $resulta = mysql_query($querya) or die(mysql_error());

 $sumOfPoints = 0;
 while($rowa = mysql_fetch_array($resulta)){

      $n = $rowa['venuesid'];
      $queryb = "SELECT venuesid, SUM(points) as sumpoints from venues where venuesid='".$n."' GROUP BY venuesid ORDER BY venuesid";
      $resultb = mysql_query($queryb) or die(mysql_error());

      while($rowb = mysql_fetch_array($resultb)){

           $sumOfPoints +=  $rowb['sumpoints'];

      }

 }


  echo "Total points is $sumOfPoints<br/>";

3 个答案:

答案 0 :(得分:1)

点必须是一个字符串,你需要把它投出来

SUM(cast(points) as int)

然后按照Gaurav关于标记计算的观点

答案 1 :(得分:1)

一些建议

  1. 使用SUM(points) AS sum(仅在使用总和时清晰明了)

  2. 检查点是数字字段而不是varchar。

答案 2 :(得分:0)

您收到5050,因为您的脚本在循环的两次迭代中回显50

从它的外观来看,你的第二个查询的GROUP BY子句不会在venuesid上进行分组。因此,首先尝试将GROUP BY子句更改为:

GROUP BY venuesid

如果这不能提供您正在寻找的结果,那么您应该尝试使用venuesid的静态值直接针对数据库运行查询,以查看从中获取的内容,然后可能更新你的问题,我们可以从那里拿走。