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

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

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

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

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

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

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

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

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

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

Новогодняя открытка

Декабрь 30, 2010 г.

Обалденная идея пришла в головы сотрудников yota. Они придумали и воплотили оригинальную поздравительную открытку по случаю нового года. Получилось ...

Читать

Как в SikuluX получить инфу о мониторах в системе

Октябрь 1, 2025 г.

Иногда при автоматизации через SikuliX важно понимать, с каким именно монитором мы работаем. Например, если у вас несколько экранов, нужно задать координаты для поиска элементов или запускать сценарий на конкретном дисплее. К счастью, в SikuliX это ...

Читать

Насколько реальна телепортация?

Июнь 18, 2017 г.

Что такое телепортация? Слово образовано смесью греческого теле (-далеко) и латинского портаре (-нести). Мне нравится фильм "Телепорт". Давно его не ...

Читать

Conditionals - условные конструкции в английском языке

Июнь 11, 2020 г.

Продолжаю учить англ., здесь я собрал шпаргалку по всем "условным" конструкциям. Начнем с нуля. :) Zero Conditional Используется для выражения того, что выполняется всегда (по нашему мнению). Формула следующая: [crayon-6aa734ab42075035317330/] ...

Читать
 

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

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



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

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

  1. MaratMS:

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

  2. Omnius:

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