2012-11-27 64 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個更多評論鏈接」