2013-07-02 48 views
0

,当我有我保存到MySQL数据库PHP数组:PHP阵列 - 奇数据保存到MySQL

$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:";

有没有人碰到这种/知道这可能是什么,并会提供一个解释友好?

+2

貌似已序列两次数据。 “s:55:”,作为一个字符串,长度为5个字符,因此成为:5:“s:55:”;'。验证你的序列化工作流程。 – LSerni

+0

Iserni - 任何想法为什么/如何连续两次? –

回答

2

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

,以避免序列化问题的最常用的方法是使用Base64编码后的序列化之前保存到数据库:

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

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

史蒂文 - 感谢这 - 我想我觉得奇怪的是,我只是序列化数字'1234567',你可以看到,而不是文本或长文本等。真的很感谢在使用base64编码/解码头。将尝试它! –