@andreikotovqweet

Почему не работает обратный слеш в базе данных?

UPDATE `test` SET answer = '{"test":["qwerty","\"test\""]}' - при таком запросе, если тип данных столбца TEXT, то сохраняется строка: {"test":["qwerty",""test""]} - (без обратного слеша) и такой json становится неправильным. Если тип данных столбца JSON, то просто выдает ошибку, будто ошибка в JSON. В итоге, сохранить строку - "test" (вместо с ковычками) не получается. Буду рад ответу
  • Вопрос задан
  • 745 просмотров
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Потому что своим кодом вы приказываете SQL-парсеру "обрабатывай символ после \ как обычный текст".

P.S. Мало того, по всем правилам SQL вы должны экранировать обратным слэшем \ вообще все символы " ' \, чтобы избежать взлома через SQL-иньекции:
UPDATE `test` SET answer = '{\"test\":[\"qwerty\",\"\\\"test\\\"\",\"-\'-\"]}'
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
rozhnev
@rozhnev Куратор тега SQL
Fullstack programmer, DBA, медленно, дорого
Вам нужно экранировать слэш:
update `test` set `answer` = '{"test":["qwerty","\\"test\\""]}' ;


SQL fiddle
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы