2012-02-26 19 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; 
} 

これは、配列内の項目を返します。合計ではありません。それをどうやって修正するのですか? シモンズ:私は以前ここにこれをしようとしたが、それは正しい結果半分:おかげで

答えて

8

理由だけではなく、SELECT sum(items) FROM mytable WHERE userid="$id"を使用しないで

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

を?この種のものをデータベースサーバに送ると、CPUを節約できます。

+0

よりも高速ですか私は同意します。もしあなたが必要とするものがあれば(つまり、あとで配列を破棄するだけで)、集計をクエリの一部にしてください:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions。 html#function_sum –

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米、アイテムfrom mytable WHERE user_id = '$ id' "); 今、配列を使用して上記のクエリの 'items'フォームの合計を取得するにはどうすればよいですか? – zoomrock

+0

'$ sum + = $ row;を' $ sum + = $ row ['items'];に置き換えます。 – Sirko

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']; 
関連する問題