我有一个要保存到MySQL数据库的PHP数组:

 $q35list = serialize($_POST["q35list"]);


使用mysqli_prepare我已成功保存到数据库。

奇怪的是,我混合存储着各种数据:

s:0:"";-很好,因为用户尚未选择任何内容。

s:55:"Set[]=6&Set[]=4&Set[]=3&Set[]=7&Set[]=2&Set[]=5&Set[]=1";-很好,因为用户已选择了选项,并且此选项正确保存。

但是,我得到了一些奇怪的信息,我既无法复制也无法理解其保存方式/方式/原因:

s:4:"s:4:";
s:5:"s:55:";
s:4:"s:8:";

有没有人遇到过这个/知道这可能是什么,并且会很友好地提供解释?

最佳答案

很难说这里发生了什么,但看起来像是双重序列化,但有错误。

避免序列化问题的最常见方法是在序列化后对base64进行编码,然后再保存到db:

//serialize
$string = base64_encode(serialize($array));

//unserialize
$array = unserialize(base64_decode($string));

09-30 16:19
查看更多