我在反序列化數據庫表中的數據時遇到了問題。我將這些數據序列化並保存到表格中。當我檢索數據時,我無法正確地得到它。以下是我的代碼。反序列化問題
$miscel = serialize(array($_POST['Prod_Price'],$_POST['Prod_Cond']));
我成功地將數據插入數據庫。在數據庫表中,它看起來像
s:38:"a:2:{i:0;s:4:"4444";i:1;s:6:"Middle";}
我怎樣才能正確地檢索數據?
我在反序列化數據庫表中的數據時遇到了問題。我將這些數據序列化並保存到表格中。當我檢索數據時,我無法正確地得到它。以下是我的代碼。反序列化問題
$miscel = serialize(array($_POST['Prod_Price'],$_POST['Prod_Cond']));
我成功地將數據插入數據庫。在數據庫表中,它看起來像
s:38:"a:2:{i:0;s:4:"4444";i:1;s:6:"Middle";}
我怎樣才能正確地檢索數據?
究竟是什麼問題?你應該能夠簡單地調用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']));
您需要使用unserialize FUNC灰。這將每一個返回到一個數組中。
$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])
什麼是你的問題,更具體?你打電話反序列化你的字符串? – alexn 2011-02-11 11:00:14
我將數據序列化並放入mysql表中。但我不知道如何檢索。我嘗試了反序列化,但它不起作用。 – Arung 2011-02-11 11:03:02
您是否在談論如何從數據庫檢索數據? – 2011-02-11 11:08:15