Вывод суммы таблицы в PHP - PullRequest
       3

Вывод суммы таблицы в PHP

5 голосов
/ 02 февраля 2012

У меня есть 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», я получаю «Array».

Кто-нибудь знает правильный запрос, чтобы сделать это?

Ответы [ 4 ]

4 голосов
/ 02 февраля 2012

Вы получаете 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 для него .

Кроме того, я бы порекомендовал не использовать функции mysql_ *, если у вас есть опция. Более новый интерфейс, такой как PDO, или, по крайней мере, mysqli, будет лучше. Конечно, это будет зависеть от вашего проекта ... если вы работаете с большой базой устаревшего кода, это может быть трудно изменить. Но если вы начинаете сейчас, я думаю, вы выиграете от новых библиотек. Вы можете увидеть мое мнение и некоторые рекомендации по переходу расширений в этой статье , которую я написал .

Надеюсь, это помогло ... и удачи!

1 голос
/ 02 февраля 2012

mysql_fetch_array возвращает массив.Поэтому вам нужно рассматривать $totalpoints как массив.

попробуйте добавить эту строку в конец вашего фрагмента:

echo $totalPoints[0];

Существует несколько способов получения данных с помощью функций mysql, которые я предлагаю прочитать вРуководство по PHP.

Вот это mysql_fetch_array

1 голос
/ 02 февраля 2012

Строка набора результатов - это массив с таким количеством элементов, которое вы получили в SELECT. В вашем случае у вас есть только 1 элемент (сумма). Итак, вы должны: echo $totalPoints[0]; Если вам нужно устранить проблемы такого рода, я рекомендую вам прочитать о функции print_r.

1 голос
/ 02 февраля 2012

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