0

これは、「amountReceived」列の合計を計算するために使用しているコードです。invID'95'の合計は=312であるはずですが、何らかの理由で=300にすぎません。問題が何であるかはわかりません。(以下のDBイメージを参照してください)。

$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)は、フェッチした1行のすべての「列」を含む配列を返します。つまり、たとえばarray('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_*関数を使用しないでください-MySQLiまたはPDOを使用してください。
  2. print_r($result);中に何かがあるかどうかを確認します。
于 2012-07-17T01:37:18.733 に答える