Как сохранить строку MySQL count() в массив PHP?

#php #mysql #multidimensional-array #count

#php #mysql #многомерный массив #количество

Вопрос:

Здравствуйте, я хочу сохранить одну строку, которая выходит из базы данных 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)
массив (3) { [«id»]=> строка (1) «1» [«значение»]=> строка (1) «0» [«сумма»]=> строка (1) «1» } массив (3) { [«id»]=> строка (1) «1» [«value»]=> строка(1) «1» [«sum»]=> строка (1) «3» } массив(3) { [«идентификатор»]=> строка (1) «1» [«значение»]=> строка (1) «2» [«сумма»]=> строка (1) «1» } массив (3) { [«идентификатор»]=> строка (1) «1» [«значение»]=> строка (1) «6» [«сумма»]=> строка (1) «1» } массив (3) { [«идентификатор»]=> строка (1) «2» [«значение»]=> строка (1) «2» [» сумма»]=> строка(1) «4» } массив(3) { [«id»]=> строка (1) «2» [«значение»]=> строка (1) «5» [«sum»]=> строка (1) «1» } массив (3) { [«id»]=> строка (1) «2» [«value»]=> строка(1) «6» [«sum»]=> строка (1) «1» } массив (3) { [«id»]=> строка (1) » 3″ [«значение»]=> строка(1) «2» [«сумма»]=> строка (1) «1» } массив (3) { [«идентификатор»]=> строка (1) «3» [«значение»]=> строка (1) «3» [«сумма»]=> строка (1) «4» } массив (3) { [«идентификатор»]=> строка (1) «3» [«значение»]=> строка (1) «6» [«сумма»]=> строка (1) «1» } массив (3) { [«идентификатор»]=> строка (1) «4» [«значение»]=> строка (1) «2» [«сумма»]=> строка (1) «2» } массив (3) { [«идентификатор»]=> строка (1) «4» [«значение»]=> строка (1) «4» [«сумма»]=> строка (1) «4» }

Комментарии:

1. Пожалуйста, опубликуйте вывод var_dump($data); , и я бы порекомендовал вам заключить значения массива в qoutes.

2. почему вы хотите, чтобы все столбцы хранились в ключах многомерного массива? это означает, что сначала вам понадобятся все ответы и никаких данных ответа

3. Вы хотите получить сумму значений поля «значение»?

4. значения полей отражают только значения моей базы данных, такие как школьные заметки.

Ответ №1:

Проблема в вашем запросе заключается в том, что вы используете значение count(‘value’) как сумму. 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.

Ответ №2:

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

 while($data= mysql_fetch_assoc($result)) {
    $array[$data['id']][$data['value']] = $data['sum'];
}
  

Комментарии:

1. ваше решение близко к моему решению: $array[$data[‘id’]][$data[‘value’]] = $ data[‘sum’]; должен дать мне массив с $ array [1] [1] = 3, но это не так??

2. это странно, что вы получаете? какая переменная выдает ошибку?

Ответ №3:

попробуйте поместить { amp; }, а также ‘ вокруг ключей вокруг массивов, как в редактировании