Из JSON-строки вырезаются слэши при сохранении в Б

Здравствуйте!

Запрос в БД проходит успешно, но из значения value в БД вырезаются слеши. Значение value в запросе является JSON-строкой, которая раньше была сформирована MIGX. Но мне нужно поменять около 4000 значений, поэтому я решил менять не через админку, а запросами.

Написал такой код в снипете для замены JSON строки в БД:
$sql = "UPDATE `modx_site_tmplvar_contentvalues` SET `value` = '[{"MIGX_id":"3","title":"\u0423\u0442\u0435\u043f\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043b\u043a\u0430 1 \u044d\u0442\u0430\u0436\u0430 \u0443\u0442\u0435\u043f\u043b\u0438\u0442\u0435\u043b\u0435\u043c Knauf TR-040 200 \u043c\u043c\t\t\t\t \t\t\t\t","price":69290,"piece":""}]' WHERE `id` = '2559'";
$query = $modx->prepare($sql);
$query->execute();
Значение в БД после запроса приобретает такой вид:
[{"MIGX_id":"3","title":"u0423u0442u0435u043fu043bu0435u043du0438u0435 u043fu043eu0442u043eu043bu043au0430 1 u044du0442u0430u0436u0430 u0443u0442u0435u043fu043bu0438u0442u0435u043bu0435u043c Knauf TR-040 200 u043cu043c				 				","price":69290,"piece":""}]

Пробовал в phpmyadmin такой запрос делать — слеши вырезаются. Пробовал через dumper.php — аналогично.

Помогите решить проблему, пожалуйста.
Михаил
28 января 2015, 12:38
modx.pro
1
1 091
0

Комментарии: 3

Василий Наумкин
28 января 2015, 16:39
0
Нужно экранировать экранированный символ, то есть
\\u0423
и далее по тексту.
    Михаил
    29 января 2015, 10:25
    0
    Василий, спасибо. Помогло. Прогнал json-строку через addcslashes
    $v_json = addcslashes($v_json, '\\');
      Алексей Ерохин
      29 января 2015, 12:44
      0
      а еще можно использовать
      $query->bindParam('value',$v_json,  PDO::PARAM_STR);
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    3