【发布时间】:2017-09-14 15:23:36
【问题描述】:
我这样保存了我的数组:
$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():49151 字节偏移量 1309 处出错
我比较了serialize 和unserializeresult 的长度。
这两个字符串是不同的。 serialize 的长度是 255164,unserialize 是 65535。似乎它没有完全加载。
有人知道是什么让它与众不同吗?
我希望有人可以帮助我解决这个问题。谢谢。
【问题讨论】:
-
你试过不插入和从数据库获取吗?如果它工作,数据库插入的问题。可能有一个字符会破坏插入或结果。使用带有 ENT_QUOTES 参数的任何 json 编码。
-
是的,当我没有插入并从数据库中获取时,它可以完美运行。你能给我一些参考吗?
-
65535 应该响铃。您的数据库列可能太窄。 Mysql 在插入时截断你的字符串。
-
好的,您的列类型是什么?我猜它的 varchar 长度小于要求的长度
-
非常感谢兄弟,现在我可以继续我的工作了。祝你有美好的一天:D。再次感谢您:)
标签: php serialization