2012-07-29 55 views
-3

我怎麼能拿總和值在PHP文件獲取SUM在PHP中的數據庫值

$a = mysql_query('SELECT d.name, d.idnumber, d.days FROM users d'); 
while($row = mysql_fetch_array($a)) 
{ 
    $idnumber = $row['idnumber']; 
    $days  = $row['days']; 
    echo $array_sum($days); 
} 

我需要總結,我從PHP文件數據庫得到了變量,但不作爲SUM查詢。在我的數據庫我有3行即3,10和1所以我需要14和

+0

爲什麼你不能在查詢中使用SUM函數? – Dan 2012-07-29 13:15:42

+1

爲什麼不只是聲明一個變量$ days = 0;然後說'$ days + = $ row ['days'];' – ATaylor 2012-07-29 13:15:43

+0

'$ array_sum($ days)'函數在開始時沒有'$'。 – 2012-07-29 13:16:15

回答

1
$sum = 0; 
$a = mysql_query('SELECT d.name, d.idnumber, d.days FROM users d'); 
while($row = mysql_fetch_array($a)) 
{ 
    $idnumber = $row['idnumber']; 
    $days  = $row['days']; 
    $sum  += intval($days); 
} 
echo $sum; 
+0

邏輯正在工作,但Iam得到的輸出像31314.最後一位數字14是答案,我們怎麼能得到14 – ronquiq 2012-07-29 13:21:33

+0

@ronquiq編輯,現在嘗試。如果不起作用,請嘗試將'echo $ days'添加到while循環的末尾,並查看它是否輸出正確的結果。 – 2012-07-29 13:26:24

+0

沒有相同的答案31314,我得到正確的數據,而我打印$天 – ronquiq 2012-07-29 13:31:54

0
$sum = 0 
while(...){ 
    .... 
    $sum += $days; 
    echo $sum; 
} 
0

另一種選擇,如果你發現自己需要做這樣的事情的時候,是在轉結果,這會讓你輕鬆地總結你想要的列。我詳細地寫了一個關於在blog post中這樣做的例子。變調功能也粘貼下面,如果你不希望有通過點擊:

function transpose($array) { 
    if (!is_array($array) || empty($array)) { 
     return array(); 
    } 
    else { 
     foreach ($array as $row_key => $row) { 
      if (is_array($row) && !empty($row)) { //check to see if there is a second dimension 
       foreach ($row as $column_key => $element) { 
        $transposed_array[$column_key][$row_key] = $element; 
       } 
      } 
      else { 
       $transposed_array[0][$row_key] = $row; 
      } 
     } 
     return $transposed_array; 
    } 
} 

應用這個給你在你的問題發佈的代碼,你會得到

$a = mysql_query('SELECT d.name, d.idnumber, d.days FROM users d'); 
$rows = array(); 
while($row = mysql_fetch_assoc($a)) { 
    $rows[] = $row; 
} 
$transposed_results = transpose($rows); 
echo array_sum($transposed_results['days']); 

使用這種技術具有其他好處,例如允許您輕鬆地通過列的值foreach,或對列的值運行更復雜的array_map回調。