在PHP中回应表的总和

时间:2012-02-02 01:01:26

标签: php mysql database sum

我在一个名为Points的表中有2列。 2列是UserPoints和UserID。

我希望能够回显用户拥有的总分数。

我有类似的东西,但我认为不对。

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

当我通过回显“$ totalPoints”来回应上述陈述时,我得到“数组”。

任何人都知道正确的查询吗?

4 个答案:

答案 0 :(得分:4)

您收到Array,因为这是$totalPoints中存储的内容。仔细查看您的代码,您将看到使用mysql_fetch_array()函数,该函数从结果集中检索一行结果作为数组。如果您在var_dump()$totalPoints,则会看到以下内容:

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中看到我对转换扩展程序的看法和一些指导。

希望这有帮助......祝你好运!

答案 1 :(得分: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'];

答案 2 :(得分:1)

mysql_fetch_array返回一个数组。因此,您需要将$totalpoints视为数组。

尝试将此行添加到代码段的末尾:

echo $totalPoints[0];

有几种方法可以使用mysql函数检索数据,我建议在php手册中阅读它们。

这是mysql_fetch_array

答案 3 :(得分:1)

结果集行是一个数组,其中包含与SELECT中相同的元素。 在你的情况下,你只有1个元素(总和)。 所以你应该: echo $totalPoints[0]; 如果您需要调试此类问题,我建议您阅读有关print_r函数的信息。