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])
返回什么?这不是最好的主意。如果其中一个字符串中有一个逗号呢?我认为它不是这样工作的。我更喜欢旧答案(你不能用逗号来表示字符串)。这不是最好的主意。如果其中一个字符串中有一个逗号呢?我认为它不是这样工作的。我更喜欢旧答案(你不能用逗号来表示字符串)。