2

我想从 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";}
4

1 回答 1

0

起初您的序列化字符串无效: 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";} 是正确的。

第二:

您不能连接这些值并像在这个 NOT WORKING 示例中那样进行反序列化:

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 更多评论链接”

于 2013-02-14T07:46:19.190 回答