我有一张如下表:
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。
感谢您的帮助。
答案 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: ".$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