我在一个名为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”来回应上述陈述时,我得到“数组”。
任何人都知道正确的查询吗?
答案 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手册中阅读它们。
答案 3 :(得分:1)
结果集行是一个数组,其中包含与SELECT中相同的元素。
在你的情况下,你只有1个元素(总和)。
所以你应该:
echo $totalPoints[0];
如果您需要调试此类问题,我建议您阅读有关print_r函数的信息。