2013-02-05 38 views
0

我試圖從數據庫中生成XML,並需要根據列的平均值收集特定數量的數據。對於$numItems變量,這可以從5到30個查詢之間的任何地方變化。在循環中選擇SUM()作爲變量

我需要執行一個for循環,並在SUM($variable)中指定列名,但我沒有收到任何數據(但也沒有錯誤)。

這裏是我的代碼:

for ($t = 1; $t <= $numItems; $t++){ 

$query = mysql_fetch_assoc(mysql_query("SELECT SUM(column'".$t."') AS value_sum FROM scoring WHERE ID='" . $userID . "' AND name ='" . $name . "'")); 

$q = $query['value_sum']/$totalUsers; 

echo "<output".$t.">" . $q . "</output".$t.">\n"; 

} 

問題是分配的我是從,當我寫單獨的查詢它的作品中獲取數據的列SUM(column1)變量名,但聲明內分配變量正在造成問題。任何人都可以給我任何指針嗎?

在此先感謝。

+2

在這種情況下,回顯SQL並嘗試在MySQL終端上直接執行它。我敢肯定,你很快就能夠得到一個想法。 – Lion

回答

1

貌似壞轉義/級聯繞柱名稱...

"SELECT SUM(column{$t}) AS value_sum FROM scoring WHERE ID='{$userID}' AND name ='{$name}'" 

這是你想要的嗎?

也使用PDO

+0

謝謝Ficuscr,完美的作品。我會閱讀PDO,感謝您的反饋。 – Paul

4

它看起來像你可能在你的查詢中有額外的單引號。我認爲它應該是:

"SELECT SUM(column".$t.")..." 

你也應該考慮做一個選擇。在for循環中執行多個數據庫調用將是一個巨大的性能問題。您可以編寫如下單個選擇:

"SELECT SUM(column1), SUM(column2), SUM(column3),..." 
+0

或「GROUP BY」。突出的評論,越少的SQL調用越好。 – ficuscr