Вставить в mySQL JSON-кодированное значение со специальными символами не удается - PullRequest
0 голосов
/ 22 августа 2011

Я пытаюсь выполнить этот запрос с PDO:

UPDATE categories
SET keywords = '{"bg":["keyword1","\u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438 "]}'
WHERE id = 4;

Проблема заключается в том, что кажется, что он записывает шестнадцатеричное значение без обратной косой черты ("\").Он отображается без обратной косой черты в моем приложении, но также и в PHPMyAdmin.

Я использую exec () в этом запросе, и я пробовал его с этим полнотекстовым запросом без каких-либо динамических / преобразованных переменных.Параметры PDO следующие:

PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"

Может кто-нибудь объяснить мне, что здесь происходит?Спасибо!

ОБНОВЛЕНИЕ: Я выполнил этот точный запрос из CLI mysql, затем отобразил его там, и проблема та же: все обратные слэши исчезли.Так что не похоже, что проблема связана с PDO, а с MySQL - или со мной!Моя версия 5.1.53

1 Ответ

1 голос
/ 22 августа 2011

Символ \ имеет особое значение в SQL.Используйте связанные параметры вместо жесткого кодирования значения в базовую строку, которую вы используете для запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...