Из JSON-строки вырезаются слэши при сохранении в Б
Здравствуйте!
Запрос в БД проходит успешно, но из значения value в БД вырезаются слеши. Значение value в запросе является JSON-строкой, которая раньше была сформирована MIGX. Но мне нужно поменять около 4000 значений, поэтому я решил менять не через админку, а запросами.
Написал такой код в снипете для замены JSON строки в БД:
Пробовал в phpmyadmin такой запрос делать — слеши вырезаются. Пробовал через dumper.php — аналогично.
Помогите решить проблему, пожалуйста.
Запрос в БД проходит успешно, но из значения 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 — аналогично.
Помогите решить проблему, пожалуйста.
Комментарии: 3
Нужно экранировать экранированный символ, то есть
\\u0423
и далее по тексту.
Василий, спасибо. Помогло. Прогнал json-строку через addcslashes
$v_json = addcslashes($v_json, '\\');
а еще можно использовать
$query->bindParam('value',$v_json, PDO::PARAM_STR);
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.