2012-02-26 111 views
0

我在查詢數據庫。然後將結果值插入數組並找到它們的總和。這是代碼:數組中值的總和

$result=mysql_query("SELECT items FROM mytable WHERE user_id='$id'"); 
$array=array(); 
while($row=mysql_fetch_assoc($result)){ 
    //insert values into array 
    $array=$row; 
    $sum=array_sum($row); 
    echo $sum; 
} 

這只是返回數組中的項目而不是總和。我該如何糾正? PS:我早想這一點,但它減半正確的結果:

$result=mysql_query("SELECT items FROM mytable WHERE user_id='$id'"); 
$row = mysql_fetch_array($result, MYSQL_NUM); 
$sum = array_sum($row); 
echo $sum; 

感謝

回答

8

爲什麼不直接使用SELECT sum(items) FROM mytable WHERE userid="$id"?如果將這種事情推送到數據庫服務器,您將節省CPU。

+0

我同意 - 如果這是你所需要的(即,如果你之後放棄數組),請將查詢的求和部分:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions。 html#function_sum – 2012-02-26 14:49:36

0
$result = mysql_query("SELECT items FROM mytable WHERE user_id='$id'"); 
$array = array(); 
$sum = 0; 
while($row=mysql_fetch_assoc($result)){ 
    //insert values into array 
    $array[] = $row; 
    $sum += $row; 
} 
echo $sum; 

這將是代碼,如果你需要數組和相應的總和。如果你只需要合計,這將是更有效,如果你有你的數據庫中把你的查詢做總和爲

$result = mysql_query("SELECT SUM(items) FROM mytable WHERE user_id='$id'"); 
$sum = mysql_fetch_assoc($result); 
+0

實際上在實際代碼中,我從DB中選擇了多於1個項目,如下所示: $ result = mysql_query(「SELECT name,quantity,p rice,items FROM mytable WHERE user_id ='$ id'「); 現在我怎麼得到'項目'的形式使用數組的上述查詢的總和? – zoomrock 2012-02-26 16:29:44

+0

用'$ sum + = $ row ['items']替換'$ sum + = $ row;'; – Sirko 2012-02-26 16:39:13

0

使用數據庫層通常比商業邏輯來得更快

$result=mysql_query("SELECT SUM(items) AS mysum FROM mytable WHERE user_id='$id'"); 
$row = mysql_fetch_array($result, MYSQL_ASSOC); 
/* always use assoc to prevent yourself from errors after table's modification */ 
echo $row['mysum'];