#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; }, а также ‘ вокруг ключей вокруг массивов, как в редактировании