2012-02-02 26 views
5

我在表格中有2列稱爲Points。這2列是UserPoints和UserID。回覆PHP中表格的總和

我希望能夠回顯用戶擁有的積分總量。

我有這樣的事情,但我不認爲它的權利。

$getTotalPoints = mysql_query("SELECT SUM(UserPoints) FROM `Points` WHERE `UserID` = '1'") or die(mysql_error()); 
$totalPoints = mysql_fetch_array($getTotalPoints); 

當我通過回顯「$ totalPoints」迴應上述語句時,我得到「數組」。

任何人都知道正確的查詢來做到這一點?

回答

4

你得到Array,因爲這是存儲在$totalPoints。仔細查看你的代碼,你會看到你使用了mysql_fetch_array()函數,該函數從結果集中檢索一行結果作爲數組。如果你在做$totalPointsvar_dump()會看到以下內容:

Array 
(
    [0] => 12345 
    [SUM(UserPoints)] => 12345 
) 

你要找的總和是在索引0或列名,在這種情況下SUM(UserPoints),所以你可以使用它或echo $totalPoints[0]輸出echo $totalPoints['SUM(UserPoints)'] 。可以使用mysql_result()函數。我認爲這更符合你期望的行爲。它從結果集的行中獲取單個值。所以,相反的mysql_fetch_array()你寫道:

$totalPoints = mysql_result($result, 0); 

欲瞭解更多有關mysql_result(),檢查出PHP documentation for it

另外,如果您有選項,我會建議不要使用mysql_ *函數。像PDO這樣的新界面,或者至少mysqli,會更好。這將取決於你的項目當然......如果你正在處理一個大的遺留代碼庫,它可能很難改變。但是如果你現在開始,我想你會從更新的圖書館中受益。您可以在article I wrote中看到我的意見和關於轉換擴展的一些指導。

希望這有助於......祝你好運!

+0

對於精彩的文章+1。 – 2012-02-02 01:43:14

1

mysql_fetch_array將結果行作爲關聯數組或數組數組或兩者獲取。默認情況下它會創建兩個。你需要的一切就是echo $totalPoints[0];

,或者,如果你重寫您要求

$getTotalPoints = mysql_query("SELECT SUM(UserPoints) total FROM `Points` 
     WHERE `UserID` = '1'") or die(mysql_error()); 
$totalPoints = mysql_fetch_array($getTotalPoints); 
echo $totalPoints['total']; 
1

mysql_fetch_array返回一個數組。因此,您需要將$totalpoints視爲一個數組。

嘗試添加此行到您的代碼段的末尾:

echo $totalPoints[0];

有幾種方法來檢索與MySQL的功能,我建議在PHP手冊閱讀有關他們的數據。

這裏是mysql_fetch_array

1

的結果集行是與儘可能多元素的數組,你在SELECT了。 在你的情況下,你只有1個元素(總和)。 所以你應該: echo $totalPoints[0]; 如果你需要調試這類問題,我建議你閱讀關於print_r函數。