2012-11-27 66 views
2

我想从sql中获取未序列化的数据,但它只显示第一行。哪里不对?从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";} 
+0

什么语言是什么?它肯定不是SQL。 – RBarryYoung

+0

只返回第一行。它的PHP和我从一个MySQL表中获取数据。我使用xampp的方式... –

+1

var_dump($ rows [“cars”])的输出是什么? –

回答

0

首先你的序列化的字符串是无效的: 一:2:{S:3: “车”; S:8 :“mercedes”; s:2:“ps”; s:3:“120”;} a:2:{s:3:“car”; s:4:“audi”; s:2:“ps “; s:3:”145“;} 是正确的。

二:

你不能Concat的这些价值,做在此就不工作实例反序列化,如:

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";}}" 

更新: 对不起didnt看到了 “8个更多评论链接”