在数据库中存储序列化后,无法对对象进行反序列化

Ali*_*Ali 4 php mysql serialization zend-framework

我正在尝试在这里存储一个复杂的对象,并通过序列化运行mysql_real_escape_string它的对象并将其插入到mysql数据库中来实现.

然而,当我检索它运行一个SQL查询 - 我在这里使用Zend框架Zend_DB_Table,但无论如何 - 当我尝试striplashes和unserialize我不会得到我的对象.我试图在没有剥离斜线的情况下进行反序列化,并且除了没有工作之外.


UPDATE

这很奇怪.我做了一个简单的页面,它只是反序列化一个序列化的对象.如果我从数据库中检索序列化的字符串并通过另一个只有unserialize()它的页面反序列化它 - 它完美地工作,我得到了我的对象.但是在代码中讽刺的是我正在重新获取字符串并且我在那里运行完全相同的unserialize选项,它不起作用!

所以基本上序列化的字符串没有任何问题 - 由于一些奇怪的原因,它不会在我的应用程序中反序列化它,但它在其他地方反序列化,这没有任何意义.

ae.*_*ae. 16

您可能需要先通过base64编码运行它:

$safe_string_to_store = base64_encode(serialize($data));
Run Code Online (Sandbox Code Playgroud)

然后把它拿回来:

$date = unserialize(base64_decode($safe_string_to_store));
Run Code Online (Sandbox Code Playgroud)

尝试一下,让我们知道它是否有效.

(并且不要在上面运行stripslashes - 没有必要)