如何修复PHP注意:unserialize():错误偏移1309为49151字节?

时间:2017-04-18 16:58:29

标签: php serialization

我保存了我的数组:

$saveModel = base64_encode(serialize($classifier));

mysqli_query($db, "INSERT INTO model_latih(isi) VALUES('$saveModel')")or die("Error : ".mysqli_error($db)); 

然后我尝试使用以下代码从数据库中获取它:

$q = mysqli_query($db, "SELECT * FROM model_latih")or die("Error: ".mysqli_error($db));

$fetch = mysqli_fetch_assoc($q);
$row = $fetch['isi'];
$data = unserialize(base64_decode($row));

但它给出了这个错误:

  

PHP注意:unserialize():错误偏移量1309为49151字节

我已将serializeunserialize结果的长度进行了比较。
这两个字符串是不同的。 serialize长度为255164,unserialize为65535.似乎没有完全加载。
谁知道是什么让它与众不同?

我希望有人可以帮我解决这个问题。谢谢。

1 个答案:

答案 0 :(得分:0)

我有同样的问题。 我将数据库中列的类型从BLOB更改为MEDIUMBLOB。

我发现:

BLOB can hold 65535 bytes (64 KB)
MEDIUMBLOB can hold 16777215 bytes (16 MB)
LONGBLOB can hold 4294967295 bytes (4 GB)