Создавая свой сайт «Небеса кроссвордов», я столкнулся с проблемой.
Я создал объект PHP под названием «кроссворд», но мне нужно было сохранить информацию, содержащуюся в объекте, в базе данных.
Учитывая значительный объем данных в объекте, эта задача была непростой.
Однако я нашел решение:
function.serialize()
unserialize()
function in PHP allows you to convert complex data structures, such as arrays or objects, into strings that can be stored in a database or transferred over a network. In my case, all I had to do to save the crossword object was to use
unserialize()
.
Это было невероятно легко! Однако следует иметь в виду несколько предостережений.
Если вы используете версию PHP старше 4, вам нужно быть осторожным, поскольку во время сериализации сохраняются только свойства, а не методы.
Давайте посмотрим на фрагмент фактического кода, который я использовал:
PHP-копия addslashes()
В этом фрагменте кода я сериализовал CREATE TABLE `xword` (
`xword_id` int(11) NOT NULL auto_increment,
`xword_obj` blob NOT NULL,
`xword_name` varchar(100) NOT NULL default '',
`xword_owner` varchar(100) NOT NULL default '',
`xword_width` int(11) NOT NULL default '0',
`xword_height` int(11) NOT NULL default '0',
`xword_date` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`xword_id`)
) TYPE=MyISAM AUTO_INCREMENT=1;
object using xword
, экранируйте любые специальные символы, используя xword
, and then inserted the serialized object into the addslashes()
таблица в базе данных.
Стол serialize()
was created using the following SQL statement:
SQL-копия $crossword
Вы можете заметить, что я использовал $data = addslashes(serialize($crossword));
$name = "";
if (isset($xwordInfo['xword_name'])) {
$name = $xwordInfo['xword_name'];
}
$today = date('Y-m-d H-i-s');
$sql = "INSERT INTO `xword` (`xword_id`, `xword_obj`, `xword_name`, `xword_owner`, `xword_width`, `xword_height`, `xword_date`) VALUES ('', '" .
$data .
"', '$name', '$owner', '$width', '$height', '$today');"; function. This was necessary because when the crossword object was serialized, it might have contained characters like double quotes that needed to be escaped before saving it to the database. Теперь, когда мы сохранили объект кроссворда в базе данных, нам нужен способ его получения.
Если существует метод сериализации объекта, должен быть также метод его десериализации.
И действительно, есть: serialize($crossword)
.
serialize()
function in PHP works in the opposite direction of serialize()
.
Занимает
-
Как Работает Растеризатор Тайлов?
19 Oct, 24 -
Тексты Для Интернет-Магазинов
19 Oct, 24 -
Перспективы Безопасности Электромобилей
19 Oct, 24 -
Конкурс Программистов №4
19 Oct, 24 -
Тестирование Wav Mp3 Ogg
19 Oct, 24 -
Осторожно! Комбинаторы Из Акции…
19 Oct, 24