Php 非序列化数据错误
我找不到php为什么说我:Php 非序列化数据错误,php,serialization,pdo,Php,Serialization,Pdo,我找不到php为什么说我: Warning: Insufficient data for unserializing - 5468 required, 226 present 我正在尝试序列化一些对象和数据,然后取消序列化 也许它太大了 编辑: 由于代码太复杂,无法发布代码,因此我将解释我正在做的工作: 我正在序列化数据以将其保存到会话中。 我在会话中保存了一个篮子对象,其中包含一个产品(对象)列表。product类实现Serialize以避免保存PDO对象(序列化时返回错误),该对象位于某些
Warning: Insufficient data for unserializing - 5468 required, 226 present
我正在尝试序列化一些对象和数据,然后取消序列化
也许它太大了
编辑:
由于代码太复杂,无法发布代码,因此我将解释我正在做的工作:
我正在序列化数据以将其保存到会话中。
我在会话中保存了一个篮子对象,其中包含一个产品(对象)列表。product类实现Serialize以避免保存PDO对象(序列化时返回错误),该对象位于某些ORM功能的类中
以下是Serialize接口的实现方法:
public function serialize() {
$serialized = \serialize(array(
'_vars' => $this->getVars(),
'_returnNullIfEmpty' => $this->_returnNullIfTempty,
'_dataModel' => $this->getDataModel()
));
return $serialized;
}
public function unserialize($data) {
$unserialized = \unserialize($data);
$this->setVars($unserialized['_vars']);
$this->_returnNullIfEmpty = $unserialized['_returnNullIfEmpty'];
$this->_dataModel = $unserialized['_dataModel'];
}
我注意到,我总是在第一条下出现这种错误:
Notice: unserialize() [function.unserialize]: Error at offset 10503 of 10968 bytes in ...
也许你给我们写了产生这种错误的代码^^你用什么来序列化?我还怀疑它是否太大,因为警告说没有足够的数据。我正在使用serialize()进行序列化。似乎是编码问题导致序列化失败。我找到了一个解决方案:序列化后使用rawurlencode,取消序列化前使用rawurldecode。在数据库中将字段设置为二进制,这样就不会遇到编码问题。