从MySQL PHP中的行数中获取总数

时间:2011-10-17 21:55:59

标签: mysql count sum

我正在为我的游戏制作彩票系统,而且我的总体尺寸有问题

当前进展:http://playsilab.com/lottery

无论如何,我正在做的就是拥有它,这样一个用户就可以在游戏中购买一张票,这将被视为+5币种。

这就是表格的样子 enter image description here

基本上我需要它来计算所有5000000和输出1的数字 或者我的另一个想法,获得人数和* 5 任何这些都会很棒:)

基本上对于500人的8人,应该打印出40000000(40M)

我的尝试:

$pot = mysql_query("SELECT name, SUM(pot), COUNT(name) FROM contestants");
$details = mysql_fetch_array($pot);
$totalpot = $details['SUM($details['pot']'];

2 个答案:

答案 0 :(得分:2)

这一行错了:

$totalpot = $details['SUM($details['pot']'];

问题似乎是:

的组合
  • 带引号的字符串中未转义的引号
  • 您的美元参考未被评估,因为它在单引号内
  • 缺少括号
  • 并且通常不正确

为列提供别名,以便在源代码中更容易引用它们:

SELECT SUM(pot) AS sum_pot, COUNT(name) AS count_name FROM contestants

然后你可以写:

$totalpot = $details['sum_pot'];

您的代码还存在许多其他问题,例如:

  • 在尝试访问结果之前,您没有检查是否查询失败。
  • 在同一个结果集中同时返回单行nameSUM之类的聚合值是没有意义的。在MySQL中它是合法的,但在许多其他数据库中,这将被视为错误。

答案 1 :(得分:0)

我的解决方案:

list($totalpot) = @mysql_fetch_row(mysql_query("SELECT SUM(pot) FROM contestants WHERE pot=5000000"));
list($count) = @mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM contestants WHERE pot=5000000"));

或者如果你想按照金额计算总和

$query = mysql_query("SELECT pot, SUM(pot) as sum_pot, COUNT(*) as count_pot FROM contestants GROUP BY pot");
while($row = @mysql_fetch_assoc($query)) {
    // $row['pot'] is 50000
    // $row['sum_pot'] is 40M
    // $row['count_pot'] is 8
}