我有一个序列化对象存储在一个mysql数据库中,类型为text
的列,通过php保存。
如果我双击PHPMyAdmin中的字段以编辑内联字段的值,然后通过单击编辑框保存编辑,则字段中的序列化数据会以某种方式呈现为损坏。
执行此操作后,我收到以下PHP错误:
Notice: unserialize(): Error at offset 913 of 1951 bytes in /path/to/file.php on line 46
我甚至没有更改任何数据,因为我只是单击将数据复制到剪贴板,所以它不像我引入任何奇怪的东西,或者使用语法等产生错误。我想也许一些空白正在被添加或一些奇怪的角色。
有解决方法吗?
答案 0 :(得分:1)
根据这个question,为了避免错误,你可以尝试在输出或serialize()
之前将其插入数据库:
$toDatabse = base64_encode(serialize($data)); // Save to database
$fromDatabase = unserialize(base64_decode($data)); //Getting Save Format
答案 1 :(得分:1)
phpmyadmin中存在一个错误,该错误将换行符保存为序列化php字符串的“ \ n”。 PHP序列化的字符串不得包含换行符!如果您想直接从phpmyadmin安全地修改它,请确保将换行符替换为'\ n'字符串,这可以在任何文本编辑器中轻松完成。