2012-07-17 73 views
0

這是我用來嘗試計算「amountReceived」列的總和的代碼。 invID'95'的總數應該= 312,但由於某種原因,它只有= 300。我不確定問題是什麼。 (請參閱下面的數據庫圖片)。PHP數組總和不加起來所有項目

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

enter image description here

enter image description here

+0

因爲你只取一行... – nickb 2012-07-17 01:42:32

回答

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的版本;)

+0

使用數據庫中的聚合函數來獲得所需的總數會更有效率。 – Fluffeh 2012-07-17 01:43:39

+0

是真實的,但我想描述爲什麼他的方式沒有工作;) – r3bel 2012-07-17 01:45:05

7

如何使用SUM()?

$sql = mysql_query("SELECT SUM(amountReceived) FROM payments WHERE invID='".$id."'"); 
$totalPayment = mysql_fetch_row($sql); 
+0

我以前試過,它不工作。我只是不確定問題是什麼。 – 2012-07-17 02:02:01

0
  1. 不要使用mysql_*功能 - 使用MySQLiPDO
  2. print_r($result);看看裏面是否有東西。
+0

不要忘記你可以使用反引號(')來內聯代碼突出顯示並鏈接到有用的資源 – 2012-07-17 01:38:32