Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с JSON

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
NeuroZ
Отправлено: 23 Февраля, 2015 - 18:12:47
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




Всем привет. Возникла проблема, вызванная "ошибкой синтаксиса", но по факту ошибки нет.

1. Я формирую JSON строку с помощью JS как обычную строку и записываю ее в скрытое поле формы. Таким образом получаю такое:
<input type="hidden" value="[{"var1":"123"}]" />
2. После сабмита, эти данные записываются в БД.
3. При вытягивании из БД - я могу вывести на экран echo $var - и там будет эта строка, но если я сделаю json_decode($var) и попытаюсь вывести массив - то ничего не произойдет.
4. Анализ json с помощью json_last_error() показывает "ошибка синтаксиса".
5. Пробую скопировать этот JSON напрямую в переменную, а потом декодировать его - всё получается.

С чем это может быть связано и как исправить ошибку?
 
 Top
Мелкий Супермодератор
Отправлено: 23 Февраля, 2015 - 18:15:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




NeuroZ пишет:
<input type="hidden" value="[{"var1":"123"}]" />

Во-первых.

Во-вторых проверьте магические кавычки.
В-третьих - проверьте prepared statement / экранирование при записи в бд

NeuroZ пишет:
и там будет эта строка

В чётвертых сравните побайтово.


-----
PostgreSQL DBA
 
 Top
NeuroZ
Отправлено: 23 Февраля, 2015 - 18:30:10
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




Ну 1ое - там всё в порядке. То, что нужно экранируется.
Прикол в том, что я если скопирую [{"var1":"123"}] и вставлю напрямую в БД (через phpMyAdmin) - то все равно код пишет ошибку в синтаксисе...
(Добавление)
Прошу прощения. Отбой тревоги. 2 часа бился с невидимой проблемой.
Данные "портились" в коде... htmlspecialchars. Поэтому визуально я видел корректную строку, а по факту пытался декодировать битый json...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB