Как сохранить строку MySQL count () в массиве PHP? - PullRequest
0 голосов
/ 05 ноября 2011

Здравствуйте, я хочу сохранить одну строку, которая выходит из базы данных MySQL с "count ('row1' ') AS sum", но внутри моего массива у меня только пустые поля!

Запрос к базе данных:

"SELECT id, value, COUNT('value') AS sum FROM answer_user GROUP BY id,value"

php код:

$result = mysql_query($query) or die(mysql_error());
while($data= mysql_fetch_assoc($result)) {
   echo"<b>{$data['id']}#{$data['value']}#{$data['sum']}#<br>";
}

но $ data [sum] просто пусто и внутри нет цифр.

И небольшая, но незначительная неприятность в том, что я могуне упорядочено по убыванию идентификатора и возрастанию значения в моем запросе, как значение убывает с моим запросом phpMyAdmin говорит:

   id value     sum
    1   0   1
    1   1   3
    1   2   1
    1   6   1
    2   2   4
    2   5   1
    2   6   1
    3   2   1
    3   3   4
    3   6   1

моя главная цель будет хранить его в одном двумерном массиве, как $ data [id] [value] = "[sum]"

что если я сделаю эхо "$ data [1] [1]";результат должен быть простым 3

var_dump ($ data)
array (3) {["id"] => string (1) "1" ["value"] => string (1)"0" ["sum"] => string (1) "1"} array (3) {["id"] => string (1) "1" ["value"] => string (1) "1"[" sum "] => string (1)" 3 "} array (3) {[" id "] => string (1)" 1 "[" value "] => string (1)" 2 "["sum"] => string (1) "1"} array (3) {["id"] => string (1) "1" ["value"] => string (1) "6" ["sum"] => string (1)" 1 "} array (3) {[" id "] => string (1)" 2 "[" value "] => string (1)" 2 "[" sum "]=> string (1) "4"} array (3) {["id"] => string (1) "2" ["value"] => string (1) "5" ["sum"] =>string (1) "1"} array (3) {["id"] => string (1) "2" ["value"] => string (1) "6" ["sum"] => string (1) "1"} array (3) {["id"] => string (1) "3" ["value"] => string (1) "2" ["sum"] => string (1)"1"} array (3) {["id"] => string (1) "3" ["value"] => string (1) "3" ["sum"] => string (1) "4"} array (3) {[" id "] => string (1)" 3 "[" value "] => string (1)" 6 "[" sum "] => string (1)" 1 "}array (3) {["id"] => string (1) "4" ["value"] => string (1) "2" ["sum"] => string (1) "2"} array (3) {["id"] => string (1) "4" ["value"] => string (1) "4" ["sum"] => string (1)"4"}

Ответы [ 3 ]

1 голос
/ 10 апреля 2012

Проблема в вашем запросе состоит в том, что вы используете количество ('значение') как сумму.Mysql получает значение в виде строки, вы должны использовать его следующим образом.

SELECT id, value, COUNT(value) AS sum FROM answer_user GROUP BY id,value

И добавить порядок на

SELECT id, value, COUNT(value) AS sum FROM answer_user GROUP BY id,value order by id asc , value asc

Это приносит идеальный результат.Порядок по сортировке будет сначала с идентификатором, а затем по каждому значению idwith.И результат, который вы показали здесь, не показывает, что в сумме возвращается 0.

0 голосов
/ 05 ноября 2011

Вы имеете в виду это?

while($data= mysql_fetch_assoc($result)) {
    $array[$data['id']][$data['value']] = $data['sum'];
}
0 голосов
/ 05 ноября 2011

попробуйте поместить {&}, а также 'вокруг клавиш вокруг массивов, как в правке

...