0

这是我用来尝试计算“amountReceived”列的总和的代码。invID '95' 的总数应该 = 312,但由于某种原因,它只有 = 300。我不确定问题出在哪里。(请参阅下面的数据库图像)。

$sql = mysql_query("SELECT amountReceived FROM payments WHERE invID='".$id."'");
$result = mysql_fetch_array($sql);
$totalPayment = array_sum($result);
$balanceDue = $invoiceTotal - $totalPayment;

在此处输入图像描述

在此处输入图像描述

4

3 回答 3

7

使用 SUM() 怎么样?

$sql = mysql_query("SELECT SUM(amountReceived) FROM payments WHERE invID='".$id."'");
$totalPayment = mysql_fetch_row($sql);
于 2012-07-17T01:36:24.437 回答
3

那么 mysql_fetch_array($sql) 返回一个数组,其中包含您获取的一行的所有“列”,这意味着您获得了一个例如数组('amountReceived'=>150)

这应该工作:

$sql = mysql_query("SELECT amountReceived FROM payments WHERE invID='".$id."'");
$totalPayment = 0;
while($result = mysql_fetch_array($sql)) {
    $totalPayment += $result['amountReceived'];
}
$balanceDue = $invoiceTotal - $totalPayment;

这只是问题的 php 侧面描述,如果您想更高效,请使用sel的版本;)

于 2012-07-17T01:41:39.007 回答
0
  1. 不要使用mysql_*函数 - 使用MySQLiPDO
  2. print_r($result);看看里面有没有东西。
于 2012-07-17T01:37:18.733 回答