Php 序列化数组并存储在数据库中

Php 序列化数组并存储在数据库中,php,mysql,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] => ) 但是当我在序列化之后尝试存

我有一个类似的数组

$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中的单个数组元素。如何正确序列化该元素。

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


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

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

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

@pradeep 在textfield中存储$newArray的地方,通过序列化来存储它

$arrayString = $_POST['newId'];
您将在$arrayString中获得序列化数组。 若要在存储到数据库中之前使用该数组,请使用unserialize,否则直接存储到数据库中,因为该数组已序列化

$array = unserialize($arrayString);
这将解决您的问题 在textfield中存储$newArray的地方,通过序列化来存储它

$arrayString = $_POST['newId'];
您将在$arrayString中获得序列化数组。 若要在存储到数据库中之前使用该数组,请使用unserialize,否则直接存储到数据库中,因为该数组已序列化

$array = unserialize($arrayString);

这将解决您的问题

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

然后分解(“;”,$string);循环并分解(“:”,$rows)作为结果

使分隔符更难冲突

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

我不太确定我是否理解这个问题,但是如果你不想序列化,如果你想从文本字段传递它,也许可以使用自定义语法,比如-1:a;b:2;c:3

然后分解(“;”,$string);循环并分解(“:”,$rows)作为结果

使分隔符更难冲突

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

我在一个文本字段中存储了一个数组…所以我想它被转换成了字符串。。。我是怎么过来的..?不,我的意思是你要把一个字符串传递给
serialize()
,而不是一个数组。我把一个数组存储在一个文本字段中…所以我觉得它被转换成了字符串。。。我是怎么过来的?…不,我的意思是你把一个字符串传递给<代码> SerialZeIe()/<代码>,而不是一个数组。你问“我如何正确地序列化元素”,但问题是你:你认为数据库中的数组“适当序列化”是什么?您没有共享您的数据模型或期望,因此很难回答您的问题。我假设正确的序列化应该是
a:14:{I:1;s:3:“是”;I:2;s:2:“ab”…}
您确定正确发布了数组吗?什么是<代码> iSyRead($xPrest[$NeWd])< /Cord>返回?你问“我如何正确序列化元素”,但问题是你:你认为DB中数组的“适当序列化”是什么?您没有共享您的数据模型或期望,因此很难回答您的问题。我假设正确的序列化应该是
a:14:{I:1;s:3:“是”;I:2;s:2:“ab”…}
您确定正确发布了数组吗?
is\u array($\u POST[$newId])
返回什么?这不是最好的主意。如果其中一个字符串中有一个逗号呢?我认为它不是这样工作的。我更喜欢旧答案(你不能用逗号来表示字符串)。这不是最好的主意。如果其中一个字符串中有一个逗号呢?我认为它不是这样工作的。我更喜欢旧答案(你不能用逗号来表示字符串)。