PHPMyAdmin内联编辑损坏了文本字段中的序列化数据


PHPMyAdmin inline edit corrupting serialized data in text field

我有一个序列化的对象存储在mysql数据库中,通过php保存在类型为text的列中。

如果我在PHPMyAdmin中双击该字段以内联编辑该字段的值,然后通过从编辑框中单击来保存编辑,则该字段中的序列化数据会以某种方式损坏。

完成此操作后,我得到以下PHP错误:

Notice: unserialize(): Error at offset 913 of 1951 bytes in /path/to/file.php on line 46

我甚至没有更改任何数据,因为我只是点击将数据复制到剪贴板,所以我并没有引入任何奇怪的东西,也没有在语法等方面出错。我想可能添加了一些空白或其他字符。

有解决办法吗?

根据这个问题,为了避免错误,您可以尝试在将输出或serialize()插入数据库之前将其基于64:

$toDatabse = base64_encode(serialize($data));  // Save to database
$fromDatabase = unserialize(base64_decode($data)); //Getting Save Format 

phpmyadmin中有一个错误,它将序列化的php字符串的'''n'保存为换行符。PHP序列化字符串不得包含换行符!如果您想直接从phpmyadmin安全地修改它,请确保用'''n'字符串替换换行符,这可以从任何文本编辑器轻松完成。