【问题标题】:Error at offset for unserializing data (usual solutions tried)反序列化数据的偏移量错误(尝试了通常的解决方案)
【发布时间】:2013-03-27 08:08:47
【问题描述】:

我正在从 Instagram 和 Facebook 提取 2 个图像源。对于这两者,我最终得到了如下所示的数组,我将它们组合并存储在 MySQL 中。

 [1] => Array
    (
        [id] => 10151385447249771
        [small] => http://sphotos-b.ak.fbcdn.net/hphotos-ak-prn1/s320x320/602882_10151385447249771_875867185_n.jpg
        [large] => http://sphotos-b.ak.fbcdn.net/hphotos-ak-prn1/s600x600/602882_10151385447249771_875867185_n.jpg
        [date] => 1359526678
        [date_display] => 5:17 pm, 30 Jan 2013
        [name] => Something cool
        [link] => http://www.facebook.com/photo.php?fbid=10151385447249771&set=a.10151385444664771.496088.112462694770&type=1
        [caption] => Photo by Jimbo James
        [type] => facebook
    )

然后我执行以下操作:

$photos = array_merge($facebook_photos,$instagram_photos);

usort($photos, array($this, "sort_photos"));

$photos = array_reverse($photos);

如果我在这里输出数组就可以了。我也可以序列化和反序列化,没关系

但是,在我将其存储在 MySQL 中,然后将其取出并反序列化后,我收到“偏移错误”消息。

return mb_unserialize($feed['data']);

public function mb_unserialize($serial_str) { 
    $out = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $serial_str ); 
    $out = unserialize($out); 
    return  json_decode(stripslashes(json_encode($out)), true);
} 

我正在使用 BLOB 列来存储数据。我已经尝试过 base64 编码/解码以及存储为 JSON。还有其他想法吗?

【问题讨论】:

  • 你的意思是,你还是 serialize() 你只是把 base64json_encode() 包裹在它周围?或者您将数组存储为纯 JSON 或 base64?您能否提供查询失败的输出字符串?

标签: php json serialization


【解决方案1】:

简单的解决方案:BLOB 不够大。我将其更改为 LONGBLOB,瞧。

【讨论】:

    猜你喜欢
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 2011-07-26
    • 2018-11-07
    • 2013-04-20
    相关资源
    最近更新 更多