我有一个要保存到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));