2011-02-11 153 views
0

我在反序列化數據庫表中的數據時遇到了問題。我將這些數據序列化並保存到表格中。當我檢索數據時,我無法正確地得到它。以下是我的代碼。反序列化問題

$miscel = serialize(array($_POST['Prod_Price'],$_POST['Prod_Cond'])); 

我成功地將數據插入數據庫。在數據庫表中,它看起來像

s:38:"a:2:{i:0;s:4:"4444";i:1;s:6:"Middle";} 

我怎樣才能正確地檢索數據?

+0

什麼是你的問題,更具體?你打電話反序列化你的字符串? – alexn 2011-02-11 11:00:14

+0

我將數據序列化並放入mysql表中。但我不知道如何檢索。我嘗試了反序列化,但它不起作用。 – Arung 2011-02-11 11:03:02

+0

您是否在談論如何從數據庫檢索數據? – 2011-02-11 11:08:15

回答

3

究竟是什麼問題?你應該能夠簡單地調用unserialize()在其原來的形式來檢索數據:

// assuming your database column 'foo' contains 
// s:38:"a:2:{i:0;s:4:"4444";i:1;s:6:"Middle";} 
$miscel = unserialize($row['foo']); 
print_r($miscel);  
// returns array([0] => 4444, [1] => 'Middle'); 

如果問題在於一個事實,即處於序列化數據不是很可讀內,你應該考慮存儲陣列鍵以及

$miscel = serialize(array('price' => $_POST['Prod_Price'], 'cond' => $_POST['Prod_Cond'])); 
0

您需要使用unserialize FUNC灰。這將每一個返回到一個數組中。

0
$records = array(
      'name'=>'abc', 
      'mobile'=>'1234566789', 
      'address'=>'test', 
      'email'=>'[email protected]'); 
$records_serialize = serialize($records); 

echo "serialize<br/>"; 
print_r($records_serialize); 

echo "<br/><br/>unserialize<br/>"; 
$records_unserialize = unserialize($records_serialize); 
print_r($records_unserialize); 

下面的代碼使用序列化和反序列化

輸出

serialize 
a:4:{s:4:"name";s:3:"abc";s:6:"mobile";s:13:"1234566789";s:7:"address";s:4:"test";s:5:"email";s:13:"[email protected]";} 

unserialize 
Array ([name] => abc [mobile] => 1234566789[address] => test [email] => [email protected])