В поле MySQL вы можете хранить практически все, что хотите, единственными ограничениями являются тип данных и максимальный размер поля. Имеет ли это смысл, это другой вопрос, и зависит от вашего варианта использования. Два случая, которые имеют смысл, следующие:
Если вам просто нужно место для хранения сериализованного массива / объекта и вам не нужно запрашивать поля в сериализованных данных, вы можете сохранить его в например, поле varchar
или text
, как и любая другая строка, и просто json_encode
при входе и json_decode
при чтении.
С другой стороны, например, для случая использования, когда у вас есть переменные структуры данных, связанные с записями вашей основной таблицы, которые вам нужно запросить, вы можете использовать JSON тип данных ( доступно с MySQL 5.7.8). Тип данных JSON принимает только допустимые строки JSON для ввода, и есть несколько полезных функций для запроса содержимого.
Что бы вы ни делали, не храните JSON (или другие сериализованные данные) в обычном текстовом поле, а затем попытайтесь выполнить запрос с помощью хаков в стиле LIKE '%"field":"value"%'
. Они приносят страдания и в конечном итоге терпят неудачу.