PHP SUM函数

时间:2012-09-04 21:28:21

标签: php mysql

我有一张如下表:

id    q_id         value  
------------------------
1     2            5 
2     2            NULL 
3     2            5 
4     2            NULL 
5     4            2 
6     4            NULL 
7     4            2 
8     4            NULL 

我想要的是得到(例如)所有值where q_id = 2

的总和
    $sq = mysql_query("SELECT SUM(value) AS sum FROM  table WHERE q_id = 2)or die(mysql_error());
   while($row = mysql_fetch_array($sq)){
    $sum = $row['sum'];
     }
  echo $sum."<br>";

但我得到了

5
5

但我想要的是价值的总和而是期待10。

感谢您的帮助。

5 个答案:

答案 0 :(得分:1)

如果你要在结果集上循环,为什么不使用

SELECT value FROM table WHERE q_id=2

然后使用while循环汇总这些值?类似的东西:

while($row = mysql_fetch_array($sq)) {     $sum += $row['value']; } echo $sum."<br>";

编辑:同样,正如Jason McCreary上面所说,你应该研究一种查询数据库的替代方法。我建议在php.net上搜索“PDO”,这很容易使用。

答案 1 :(得分:1)

我们可以像这样直接在查询中求和

SELECT 5+6 AS addition

答案 2 :(得分:0)

试一试......您正在显示value,代码中缺少引号。

   $sq = mysql_query("SELECT SUM(value) AS sum FROM  `table` WHERE `q_id` = '2'")or die(mysql_error());

   while($row = mysql_fetch_assoc($sq))
   {
     $sum = $row["sum"];
   }

   echo $sum . "<br>";

答案 3 :(得分:0)

 $sq="SELECT  value FROM table WHERE q_id='".$am."'"; 
 $result=mysqli_query($link,$sq); 
while($row=mysqli_fetch_assoc($result)) { 
 $sum += $row['value']; 
     } 
 echo "<p>Sum:&nbsp;".$sum."</p><br>";
 //$am ='2'; 
 //$link  -- connection to the data base

请将$am ='2';放在select语句之前,并确保使用$link

连接到数据库

您将根据q_id

的值获得总和

我测试了代码并且工作正常。

答案 4 :(得分:-1)

您需要在查询中添加GROUP BY。将以下内容添加到最后

GROUP BY q_id