【问题标题】:unserialize() Error at offsetunserialize() 偏移量错误
【发布时间】:2013-02-02 22:37:54
【问题描述】:

错误:

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)));

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

谢谢

看过这些;

One, Two, ....

【问题讨论】:

  • 这在我的系统上运行良好。您使用的是什么版本的 PHP,这正是您正在运行的代码吗?如果可以,请在命令行而不是 Web 服务器上尝试。

标签: php serialization deserialization


【解决方案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 解决方案,所以我改用它。感谢您的贡献。

【讨论】:

    【解决方案2】:

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

    如果序列化的字符串以不同的编码保存,反序列化函数的计数器中的字节数将不匹配...

    【讨论】:

    • 谢谢,这对我有帮助。 DB编码存在问题,现在已修复!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    相关资源
    最近更新 更多