从数据库检索时序列化数组中断

Gil*_*kaz 12 php mysql serialization deserialization

我将数据保存在mysql数据库中.此数据是一个数组,内容是登录到我的系统的当前用户的不同数据.

我保存到数据库时这样做:

$data = addslashes(serialize($array));
Run Code Online (Sandbox Code Playgroud)

然后

"UPDATE or INSERT INTO TABLE SET ... data = '$data';"
Run Code Online (Sandbox Code Playgroud)

现在,由于插入或更新语句从我的php代码返回有效,因此数据被正确保存.

我的问题是,当我尝试取消序列化时,它返回false并在我的页面中显示通知.

我究竟做错了什么?

Boo*_*eus 23

我敢打赌你的mysql数据库中的字段不够大,无法保存所有字符.这就是为什么,当你取消序列化它时,你得到一个通知而没有任何回报.

尝试将字段增加到a MEDIUMBLOBMEDIUMTEXT(最大长度为16,777,215)或LONGBLOBLONGTEXT(最大长度为4,294,967,295),如下所示:

ALTER TABLE your_table MODIFY COLUMN column_name MEDIUMTEXT /* other properties*/;
Run Code Online (Sandbox Code Playgroud)

并尝试再次保存和读取您的数据.

现在,如果您的数据超过4,294,967,295(LONGBLOB或LONGTEXT),您可能应该检查保存的数据类型,也可以过滤或删除不需要的数据.