我在反序列化数据库表中的数据时遇到了问题。我将这些数据序列化并保存到表格中。当我检索数据时,我无法正确地得到它。以下是我的代码。反序列化问题
$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