我在mysql数据库中保存数据。此数据是一个数组,内容是登录到我的系统的当前用户的不同数据。
我保存到数据库时执行此操作:
$data = addslashes(serialize($array));
然后
"UPDATE or INSERT INTO TABLE SET ... data = '$data';"
现在,由于插入或更新语句从我的php代码返回有效,因此数据被正确保存。
我的问题是,当我尝试取消序列化时,它返回false并在我的页面中显示通知。
我做错了什么?
答案 0 :(得分:23)
我敢打赌你的mysql数据库中的字段不够大,无法保存所有字符。这就是为什么当你取消序列化它时,你得到一个通知而没有任何回报。
尝试将字段增加到MEDIUMBLOB
或MEDIUMTEXT
(最大长度为16,777,215)或LONGBLOB
或LONGTEXT
(最大长度为4,294,967,295),如下所示:
ALTER TABLE your_table MODIFY COLUMN column_name MEDIUMTEXT /* other properties*/;
尝试再次保存并读取您的数据。
现在,如果您的数据超过4,294,967,295(LONGBLOB或LONGTEXT),您可能应该检查保存的数据类型,也可以过滤或删除不需要的数据。
答案 1 :(得分:0)
从表中获取数据后,是否在unserialize
函数之前删除了斜杠。
尝试在没有addslashes()
的情况下插入,并在将数据带入数组之前添加斜杠。