SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 15.09.2020 08:08:42

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 834

MySQL, PHP, JSON и символ новой строки (\n)

Случилось мне вставлять в JSON-поле таблицы данные, содержащие символ новой строки. Если упрощенно, то примерно вот так:

CREATE TABLE test (j JSON);

$value = "Two
lines"
;
$json = json_encode($value);
$sql_query = "INSERT INTO test (j) VALUES ('$json')";

При попытке выполнить такой запрос я получил ошибку:

Invalid JSON text: "Invalid escape character in string." at position 3 in value for column 'test.a'.

Сам запрос получается вот таким:

INSERT INTO test (j) VALUES ('"Two\nlines"')

Что-то я никак не пойму, что тут не так hmm

Неактивен

 

#2 15.09.2020 13:07:51

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5719

Re: MySQL, PHP, JSON и символ новой строки (\n)

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.15    |
+-----------+
1 row in set (0.00 sec)

mysql> CREATE TABLE test (j JSON);
Query OK, 0 rows affected (0.04 sec)

mysql> INSERT INTO test (j) VALUES ('"Two\nlines"');
ERROR 3140 (22032): Invalid JSON text: "Invalid escape character in string." at position 4 in value for column 'test.j'.

mysql> SET @@sql_mode = 'NO_BACKSLASH_ESCAPES';
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO test (j) VALUES ('"Two\nlines"');
Query OK, 1 row affected (0.01 sec)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson