Сохранить json объект в базе данных, используя php - PullRequest
0 голосов
/ 02 мая 2020

Быстрый вопрос, у меня есть JSON объект данных, например { "name":"John", "age":30, "car":null }, возможно ли сохранить его так же, как в поле mysql? И, в свою очередь, прочитать его?

Ответы [ 3 ]

3 голосов
/ 02 мая 2020

В поле MySQL вы можете хранить практически все, что хотите, единственными ограничениями являются тип данных и максимальный размер поля. Имеет ли это смысл, это другой вопрос, и зависит от вашего варианта использования. Два случая, которые имеют смысл, следующие:

Если вам просто нужно место для хранения сериализованного массива / объекта и вам не нужно запрашивать поля в сериализованных данных, вы можете сохранить его в например, поле varchar или text, как и любая другая строка, и просто json_encode при входе и json_decode при чтении.

С другой стороны, например, для случая использования, когда у вас есть переменные структуры данных, связанные с записями вашей основной таблицы, которые вам нужно запросить, вы можете использовать JSON тип данных ( доступно с MySQL 5.7.8). Тип данных JSON принимает только допустимые строки JSON для ввода, и есть несколько полезных функций для запроса содержимого.

Что бы вы ни делали, не храните JSON (или другие сериализованные данные) в обычном текстовом поле, а затем попытайтесь выполнить запрос с помощью хаков в стиле LIKE '%"field":"value"%'. Они приносят страдания и в конечном итоге терпят неудачу.

0 голосов
/ 02 мая 2020

Это должно быть полезно: https://dev.mysql.com/doc/refman/8.0/en/json.html

MySQL поддерживает JSON объекты, поэтому что-то вроде этого:

mysql> CREATE TABLE t1 (jdoc JSON);
Query OK, 0 rows affected (0.20 sec)

mysql> INSERT INTO t1 VALUES('{"key1": "value1", "key2": "value2"}');
Query OK, 1 row affected (0.01 sec)

mysql> SELECT jdoc FROM t1;
+---------------------------------------------------------+
| jdoc                                                    |
+---------------------------------------------------------+
| {"key1": "value1", "key2": "value2"}                    |
+---------------------------------------------------------+

Там JSON также имеет гораздо больше функциональных возможностей, так что посмотрите документацию.

0 голосов
/ 02 мая 2020

Да, вы должны правильно определить столбец (я обычно определяю их как текст). После этого вы можете использовать json_decode () и все

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