2011-05-18 60 views
1
$query = $db->query("SELECT * FROM orders"); 

while ($row = mysql_fetch_array($query)) { 
    $cost= array_sum($row['cost']); 
} 

這不是工作的所有元素,我要計算所有元素的總和,但我得到這個錯誤:問題計算陣列

Warning: array_sum() expects parameter 1 to be array, string given in C:\xampp\htdocs\falco\classes\controller.php on line 303

不知道如何計算的所有元素來從MySQL?

謝謝你的時間和幫助。

+0

解決方案拋出錯誤的原因是它看起來$ row是一個數組(包含表中的一行),而$ row ['cost']是單個值。此外,您正試圖對單行進行求和,因此結果將是字段「cost」的值。下面提供的答案是合理的選擇,特別是'從foo中選擇總和(成本)...'mysql語句 – horatio 2011-05-18 21:13:58

回答

1

試試這個:

$query = $db->query("SELECT * FROM orders"); 
$cost = 0; 
while ($row = mysql_fetch_array($query)) { 
    $cost += $row['cost']; 
} 

或者從MySQL:

$query = $db->query("SELECT sum(`cost`) as `cost` FROM orders"); 
while ($row = mysql_fetch_array($query)) { 
    $cost = $row['cost']; 
} 
2

爲什麼不讓MYSQL處理呢? (「SELECT orders。*,SUM(cost)as sum_cost FROM orders」);};

2

如果它只是你願意,你可以讓數據庫的總和爲你做它:

Select sum(cost) from orders 
1

這應該工作:

$query = $db->query("SELECT * FROM orders"); 

$cost = 0; 
while ($row = mysql_fetch_array($query)) { 
    $cost += $row['cost']; 
} 

甚至更​​好

$query = $db->query("SELECT SUM(cost) FROM orders"); 
list($cost) = mysql_fetch_row($query); 
+0

'$ cost + = 0;'會產生一個錯誤 – Neal 2011-05-18 21:10:26

+0

這是一個錯字 - 現在已修復 – 2011-05-18 21:11:23

1

真的,這聽起來像你只是想要的總和。

'SELECT SUM(cost) as sum_cost FROM ORDERS'