unserialize()偏移量出错

时间:2013-02-18 13:19:34

标签: php serialization deserialization

错误:

Notice:  unserialize() [function.unserialize]: Error at offset 0 of 126 bytes in C:\wamp\www\web_service\client.php on line 224

代码1:

$data = array('table'=>'users', 'operation'=>'select', 'uid'=>'yoyo');

$data = serialize($data);
print_r(unserialize($data));

代码2:

$data = array('table'=>'users', 'operation'=>'select', 'uid'=>'yoyo');

$data = base64_encode(serialize($data));
print_r(unserialize(base64_decode($data)));

以上两者都给出了同样的错误。知道为什么吗?

由于

看着这些;

OneTwo,....

2 个答案:

答案 0 :(得分:1)

$data = array('table'=>'users', 'operation'=>'select', 'uid'=>'yoyo');

$data = json_encode($data);

// Use either as array
print_r((array) json_decode($data));

//Or Json
echo $data;

显然是JSON is better解决方案,所以我改用它。感谢您的贡献。

答案 1 :(得分:1)

反序列化的这种问题可能与数据库连接编码有关。

如果使用不同的编码保存了序列化字符串,则unserialize函数的计数器中的字节数将不匹配...