我在一个名为Points的表中有两列。这两列是UserPoints和UserID。
我希望能够回显用户拥有的总点数。
我有这样的东西,但我不认为它是正确的。
$getTotalPoints = mysql_query("SELECT SUM(UserPoints) FROM `Points` WHERE `UserID` = '1'") or die(mysql_error());
$totalPoints = mysql_fetch_array($getTotalPoints);当我通过回显"$totalPoints“来回显上面的语句时,我得到了”数组“。
有人知道执行此操作的正确查询吗?
发布于 2012-02-02 09:19:01
您将获得Array,因为这是存储在$totalPoints中的内容。仔细观察您的代码,您将看到您使用了mysql_fetch_array()函数,该函数以数组的形式从结果集中检索一行结果。如果您在$totalPoints上执行var_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中看到我的观点和一些关于转换扩展的指导。
希望这能帮到你。祝你好运!
发布于 2012-02-02 09:07:23
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'];发布于 2012-02-02 09:07:25
mysql_fetch_array返回一个数组。因此,您需要将$totalpoints视为一个数组。
尝试将此行添加到代码段的末尾:
echo $totalPoints[0];
有几种使用mysql函数检索数据的方法,我建议在php手册中阅读。
https://stackoverflow.com/questions/9105717
复制相似问题