Unserialize не работи, php

Поздрави и нека веднага да се махнем? Използвахте функцията сериализира, записа получения низ в базата данни и след като го прочете, прехвърли получения низ десериализирайте, и в отговор bool (false)? Тоест, с други думи, не работи десериализирайте. В този случай моят съвет към вас е да опитате получения низ, след функцията за сериализиране, кодирайте с помощта на base64.

Какво да направите, ако несериализирането не работи?

десериализира (сериализира ($ var)) == $ var

Ако след извършените манипулации получите равенство, тогава функциите работят правилно. Капваме по-нататък, като правило, след функцията за сериализиране, прехвърляме низа в хранилище в базата данни и тук трябва да използваме base64_encode.

unserialize

Защо несериализирането не работи?

Работата е там сериализира създава подробно описание на променлива от почти всякакъв тип (можете да прочетете повече тук). „Сериализирах“ масива в низ и в него е записано всичко: типове, дължини на низове, брой елементи и разбира се самите стойности. В стойността на един от елементите символът - "(кавичка) се изплъзна и автоматично се избягва от базата данни.

тези. вместо - ", получавате \"

Не започнах да се заяждам защо не се извежда, периодично се срещах, че тази опция е деактивирана принудително, за да не изпитва подобни проблеми, но за мен не е съвсем подходяща.

По принцип „сериализираните“ данни трябва да се съхраняват в специални полета, тип данни BLOB. Описанието на тази функция показва това. Може да се каже, че си е докарал проблеми.

Резултатът за днес е както следва

Статията, разбира се, е малко извън темата на блога, но в моя защита искам да напиша следното, когато търсех защо несериализацията не работи, често откривах информация за магически цитати и за факта, че трябваше да бъдат деактивирани.

Е, при разработването на приставка, която включва инсталиране в чужда система, беше неподходящо да се правят такива глобални промени като деактивиране на такива настройки.