2012-02-02 38 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函数。