序列化数组并存储在DB中

时间:2010-09-07 17:54:24

标签: php mysql

我有一个像

这样的数组
$newArray = $_POST[$newId];
print_r($newArray);

打印出像

Array ( [1] => Yes [2] => a [3] => b [4] => c [5] => d [6] => e [7] => f [8] => [9] => [10] => [11] => [12] => [13] => [14] => ) 

但是当我尝试在序列化之后存储在db中

serialize($newArray)

它像

一样存储
s:211:"Array
(
    [1] => Yes
    [2] => ab
    [3] => c
    [4] => d
    [5] => e
    [6] => f
    [7] =>
    [8] =>
    [9] =>
    [10] =>
    [11] =>
    [12] =>
    [13] =>
    [14] =>
)

"; 

这是DB中的单个数组元素。如何正确序列化元素。

3 个答案:

答案 0 :(得分:4)

看起来它正在序列化字符串,而不是数组。你确定$newArray是一个数组吗?

从serialize返回的字符串以's:211'开头。这意味着字符串被传递到serialize()。如果数组传递到serialize(),则返回的字符串将以'a:14'开头。

答案 1 :(得分:0)

@pradeep 在文本字段中存储$ newArray的地方,通过串行存储

$arrayString = $_POST['newId'];

您将在$ arrayString中获得serialallized数组。 如果要在存储到数据库之前使用该数组,请使用unserialize,否则直接存储在已经串行化的数据库中。

$array = unserialize($arrayString);

这将解决您的问题

答案 2 :(得分:0)

不确定我是否理解这个问题,如果您不想序列化,如果您想从文本字段传递它,可能会使用自定义语法,如:1:a; b:2; c:3

然后爆炸(';',$ string);循环,结果,爆炸(':',$ rows)

使分隔符更难以发生冲突

explode("[[;]]", string); // 1]]:[[b[[;]]