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

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

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

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

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

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

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

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

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

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

Мусорные страницы в Wordpress

Январь 17, 2017 г.

В Wordpress обнаруживается не мало артефактов маршрутизации, которые создают головную боль SEO-специалистам. Я уже рассказывал на днях о страницах вложений. А сегодня расскажу ещё об одном случае. Попробуйте на вашем блоге под WP добавить к адресу ...

Читать

Sweet alert: как убрать вообще все кнопки

Апрель 11, 2023 г.

По дефолту, если вы не задаёте кнопок, то плагин всё равно добавляет кнопку 'Ок'. Разбираемся, как удалить и её. В настройках есть такой параметр как showConfirmButton, который по умолчанию принимает значение true. Требуется лишь задать его false, ...

Читать

Время захода и восхода солнца на любой день

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

Предлагаю узнать время восхода и захода солнца для произвольного дня года. По умолчанию, данные приведены для Екатеринбурга. В форме ниже нужно ввести дату, географические координаты, разницу в часах локального времени (LT) от универсального (UT). ...

Читать

Подготовить библиотеки требуемые модулем webform

Март 21, 2024 г.

Webform объявляет множество библиотек, которые может использовать в webform.libraries.yml. Но устанавливать их предлагается так или иначе самостоятельно, т.к. их наличие ожидается в папке /libraries. Использование merge плагина Помимо описания ...

Читать
 

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

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



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

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

  1. MaratMS:

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

  2. Omnius:

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