我在从数据库表中反序列化数据时遇到问题。我将数据序列化并保存到表中。当我正在检索数据时,我无法正确获取数据。以下是我的代码。
$miscel = serialize(array($_POST['Prod_Price'],$_POST['Prod_Cond']));
我成功将数据插入数据库。在数据库表中,它看起来像
s:38:"a:2:{i:0;s:4:"4444";i:1;s:6:"Middle";}
我如何正确检索数据?
答案 0 :(得分: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']));
答案 1 :(得分:0)
答案 2 :(得分:0)
您需要使用unserialize功能。这将返回每个数组。
答案 3 :(得分:0)
$records = array(
'name'=>'abc',
'mobile'=>'1234566789',
'address'=>'test',
'email'=>'test@test.com');
$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:"test@test.com";}
unserialize
Array ( [name] => abc [mobile] => 1234566789[address] => test [email] => test@test.com )