0

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

有没有人遇到过这个/知道这可能是什么并且愿意提供解释?

4

1 回答 1

2

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

避免序列化问题的最常见方法是在序列化之后在保存到数据库之前进行 base64 编码:

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

//unserialize
$array = unserialize(base64_decode($string));
于 2013-07-02T09:57:26.760 回答