Intereting Posts
Создание образа без сохранения его как локального файла Заголовок PHP не работает в MAMP даже после удаления пробела Подавать изображение с помощью скрипта PHP и напрямую загружать изображение Можно ли использовать установку Symfony2 (несколько сайтов на одном сервере) Как сортировать массив значения по альфа-ставке в php, используя функцию asort () () SEO Дружественные ссылки, js и / или php debipping ищет c # эквивалент проверки пароля php () Ajax / jQuery для PHP и обратно? Как реализовать права пользователя в Laravel 4? Ошибка «действующее ограничение open_basedir» Подсчитывать дни в течение месяца от диапазона дат Получите HTML с текущими стилями (возможно, вложенными) страницы, которая закончила рендеринг и закончила выполнение сценариев Woocommerce: отображение описания продукта на странице в корзине Извлечение данных из двоичных файлов с помощью php Как изменить десятичный на двоичный и восстановить его битовые значения в массив?

PHP и инкапсуляция строк MySQL в массив JSON

Я играю с идеей гостевой книги / чата и имеет настройку таблицы MySQL с тремя столбцами:

1 – id – автоматический прирост основного ключа

2 – имя – строка

3 – комментарий – строка

У меня очень мало опыта работы с PHP, но это то, что я собрал для этой операции:

$result = mysql_query("SELECT * FROM guestbook"); $i = 0; while($row = mysql_fetch_array($result)) { //add the row to the $chat array at specific index of $i $chat[$i] = $row; $i += 1; } $encode = json_encode($chat); echo "$encode"; 

Однако выход из этого выглядит довольно ужасно:

 [{"0":"1","id":"1","1":"Justin ","name":"Justin ","2":"Comment 1","comment":"Comment 1"}, {"0":"2","id":"2","1":"Justin ","name":"Justin ","2":"Another comment","comment":"Another comment"}, {"0":"3","id":"3","1":"Justin ","name":"Justin ","2":"Look at this comment!","comment":"Look at this comment!"}, {"0":"4","id":"4","1":"Justin ","name":"Justin ","2":"Ok I'm done talking","comment":"Ok I'm done talking"}] 

Я надеялся получить три поля: id, имя и комментарий, но похоже, что вещи удваиваются. Может ли кто-нибудь помочь?

Благодаря!

Перефразируя Марка, просто замените эту строку:

while($row = mysql_fetch_array($result))

С этим:

while($row = mysql_fetch_array($result, MYSQL_ASSOC))

Получить чище JSON. По умолчанию mysql_fetch_array() возвращает как целочисленный индекс, так и ассоциативный индекс, вам нужен только ассоциативный индекс.

mysql_fetch_array возвращает составной массив: indexed AND keyed. Для получения только одного или другого, используйте mysql_fetch_row() (только для индексирования), mysql_fetch_assoc() (только для ключей) или используйте дополнительный аргумент в fetch_array, чтобы указать, что вы хотите: mysql_fetch_array($result, MYSQL_BOTH);