从sql中获取序列化数据

时间:2012-11-27 00:01:10

标签: php sql serialization foreach

我想从sql中获取反序列化的数据,但它只显示第一行。有什么问题?

$cars=unserialize($rows["cars"]);
foreach($cars as $car)
{
  echo "<li>".$car."</li>";
}

SQL表中的字段如下所示:

a:2:{s:6:"car";s:9:"mercedes";s:6:"ps";s:46:"120";}
a:2:{s:6:"car";s:7:"audi";s:6:"ps";s:74:"145";}

1 个答案:

答案 0 :(得分:0)

首先,您的序列化字符串无效: 一:2:{S:3: “汽车”,S:8: “奔驰”; S:2: “PS”; S:3: “120”;} 一:2:{S:3: “汽车”; S:4: “奥迪”; S:2: “PS”; S:3: “145”;} 是对的。

第二

你不能将这些值连接起来并按照这个不工作的例子进行反序列化:

unserialize('a:2:{s:3:"car";s:8:"mercedes";s:2:"ps";s:3:"120";}a:2:{s:3:"car";s:4:"audi";s:2:"ps";s:3:"145";}');

这将仅返回第一个条目。 你现在必须选择: 1.通过换行符分割该字符串或将其作为一个序列化字符串正确写入数据库。因为它会:

var_dump(serialize(array(array('car'=>'mercedes', 'ps' => '120'), array('car'=>'audi', 'ps' => '145'))));
string(110) "a:2:{i:0;a:2:{s:3:"car";s:8:"mercedes";s:2:"ps";s:3:"120";}i:1;a:2:{s:3:"car";s:4:"audi";s:2:"ps";s:3:"145";}}"

更新: 对不起,没有看到“另外8条评论链接”