Правильная сериализация (serialize) перед сохранением в базу данных

А хотелось бы начать со слов — если ничего не получается, прочитайте наконец-то инструкцию. Функции serialize unserialize отлично работают в PHP, и чем дальше, тем лучше :). Тем не менее на форумах тут и там встречаются темы вроде — «А чем заменить сериализацию в PHP?» или «Сериализация своими руками..» (охота добавить при этом — «кривыми руками» или создать тему — «Сериализация через ж…»).

Как правило, проблемы возникают после извлечения сохраненных сериализованных данных из БД. Массивы не десериализуются, объекты не работают и прочая…

Что не так с объектами

Описание класса должно идти до того как вы выполните unserialize. Если нужно выполнить на этом этапе какие то действия над объектом — опишите в классе функцию __wakeup().

Что не так с базой данных

Типично, что при сохранении в бд текстовых полей (в зависимости от определения полей таблицы), вы теряете фигурные скобки, которые как раз появляются при сериализации массивов и объектов. Подготовьте данные следующим образом:

А после извлечения данных из БД восстановить массив нужно так:

Это самые типичные проблемы.

Мало букафф? Читайте есчо !

DOMDocument кодировка при сохранении в HTML

Декабрь 20, 2016 г.

PHP поддерживает работу с классом DOMDocument, но есть некоторые особенности, которые требуют внимания. Одна из них - это html кодирование символов, если вы не укажете в заголовке документа мета информацию о кодировке. Рассмотрим пример: [crayon-69b158e6d35f6414353636/] ...

Читать

Генерация JWT токена в Drupal

Июль 30, 2023 г.

Модуль jwt реализует REST аутентификацию, настройку ключа и многое другое. Небольшой спиппет как сгенерировать и отправить jwt с собсвенной нагрузкой. Передадим токен, в котором полезной нагрузкой будет ID пользователя. А время жизни токена - 1 ...

Читать

Получим объект публикации (node) внутри кода модуля

Апрель 20, 2014 г.

По разным причинам нам может понадобится информация объекта текущей публикации (ноды) внутри модуля.Если код модуля вызывается из шаблона, то достаточно передать локальную переменную $node. Если такой возможности нет, то код ноды можно получить из текущего ...

Читать

Почему ваш canvas "съезжает" или выглядит размытым: невидимая ловушка размеров

Июнь 7, 2025 г.

HTML-элемент <canvas> часто используется для рисования интерактивной графики, визуализации данных, или даже простых эффектов. Но многие разработчики сталкиваются с неожиданным поведением: изображение смещается, масштаб не соответствует ожиданиям, ...

Читать
 

Комментарии к «Правильная сериализация (serialize) перед сохранением в базу данных»

Понравилась статья? Есть вопросы? - пишите в комментариях.



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

Много комментариев в “Правильная сериализация (serialize) перед сохранением в базу данных”

  1. MaratMS:

    А это сработает, если в массиве хранятся строки в UTF-8??

  2. Omnius:

    А какие ещё известны проблемы с unserialize?
    У меня всё равно эта функция возвращает false.