Сериализация и десериализация данных в PHP

Сериализация — процесс перевода какой-либо структуры данных в последовательность битов. Это позволяет сохранить любую структуру данных в пригодном для дальнейшего использования (после десериализации) виде.
За эти два процесса в php отвечают 2 функции — serialize и unserialize.
Попробуем сериализовать простенький объект, сохранить его в базе данных mysql, а затем десериализовать его и вывести на экран.
Прежде всего опишем класс. Можете по колдовать и создать свой, это роли не играет:

class A {
    public $a;
    public $b;   
}

Теперь создадим экземпляр класса — объект. И заполним его информацией:

$a = new A();
$a->a = "blablacode.ru";
$a->b = "howto";

Сериализуем объект:

$b = serialize($a);

Обратите внимание что в таком случае в переменную $b попадёт такая строка: O:1:»A»:2:{s:1:»a»;s:11:»blablacode.ru»;s:1:»b»;s:5:»howto»;}
Что может затруднить её добавление в базу или последующую передачу в качестве параметра GET. Поэтому пропустим эту строку через функцию addslashes. Она экранирует нежелательные символы:

$obj = addslashes($b);

Теперь всё готово для добавления в базу данных:

mysql_connect("localhost","root","pass");
mysql_select_db("test");
mysql_query("SET NAMES 'utf8'");
mysql_query("INSERT INTO `obj`(`obj`) VALUES ('$obj')") or die("Error");

Подробнее о подключении и добавлении данных в базу можете почитать тут.
Таким образом мы добавили объект в базу данных «test» в таблицу «obj».
Теперь попробуем выбрать из неё эту запись и «вернуть» данные.
Прежде всего выведем уведомление о том, что все данные сериализованы и скрипт приступил к десериализации.

echo "serialized:";

Выберем строку из базы данных:

$d = mysql_query("SELECT * FROM obj ORDER BY id DESC") or die("get error");
$res = mysql_fetch_array($d);

Десериализуем её:

$c = unserialize($res['obj']);

Выведем данные на экран:

echo $c->a;
echo "<br>";
echo $c->b;

Должны вывестись данные указанные в начале.

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий