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

PHPMyAdmin inline edit corrupting serialized data in text field

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

保存

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

执行此操作后出现以下 PHP 错误:

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

我什至没有更改任何数据,因为我只是单击以将数据复制到剪贴板,所以我并没有引入任何奇怪的东西,也没有出现语法错误等。我认为可能添加了一些空格或一些奇怪的字符。

有解决办法吗?

根据这个 question,为了避免错误,您可以尝试对输出或 serialize() 进行 base64 编码,然后再将其插入数据库:

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

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