Получить сумму от суммы в строках MySQL PHP - PullRequest
1 голос
/ 18 октября 2011

Я работаю над системой лотереи для моей игры, и у меня возникают проблемы с общим размером банка

текущий прогресс: http://playsilab.com/lottery

В любом случае, что я делаюимеет, так что пользователь купит билет в игре, и это будет считаться +5 валюты к банку.

Вот как выглядит таблица enter image description here

В основном она нужна мне, чтобы подсчитать все эти 5000000 и вывести 1 число или мою другую идею, получить количество людей и * 5 любого изэто было бы здорово:)

в основном для 8 человек с 5000000, он должен распечатать 40000000 (40M)

моя попытка:

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

Ответы [ 2 ]

2 голосов
/ 18 октября 2011

Эта строка неверна:

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

Проблема, кажется, состоит в следующем:

  • неэкранированные кавычки внутри строки в кавычках
  • Ваша ссылка на доллар не оценивается, так как она находится в одинарных кавычках
  • пропущенная скобка
  • и просто вообще не правильно

Присвойте псевдонимам столбцов, чтобы было проще ссылаться на них в исходном коде:

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

Тогда вы можете просто написать:

$totalpot = $details['sum_pot'];

Также есть ряд других проблем с вашим кодом, например:

  • Вы не проверяете, не прошел ли запрос, прежде чем пытаться получить доступ к результатам.
  • Нет смысла возвращать как name из одной строки, так и агрегированное значение, такое как SUM в том же наборе результатов. В MySQL это допустимо, но во многих других базах данных это будет отклонено как ошибка.
0 голосов
/ 18 октября 2011

мое решение:

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...