反序列化问题

时间:2011-02-11 10:57:54

标签: php mysql

我在从数据库表中反序列化数据时遇到问题。我将数据序列化并保存到表中。当我正在检索数据时,我无法正确获取数据。以下是我的代码。

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

我成功将数据插入数据库。在数据库表中,它看起来像

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

我如何正确检索数据?

4 个答案:

答案 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 )