从mysql反序列化数据

时间:2012-05-13 08:13:18

标签: php mysql

在我的mysql单元格中,这是使用序列化函数

存储的
a:1:{i:0;s:275:"a:4:{s:8:"khghg_id";s:10:"foo1187";s:3:"uri";s:21:"foo/vtory/1187";s:4:"name";s:5:"nmart";s:5:"tuhlmb";a:3:{i:0;s:40:"knuujhs/201205/13_03_pceb9.jpg";i:1;s:40:"knuujhs/201205/13_03_0wlih.jpg";i:2;s:40:"knuujhs/201205/13_03_tq5wf.jpg";}}";}

我正在尝试反序列化

我正在使用此代码

$cell =$row9['attachment'];
$list = unserialize($cell);
$info = unserialize($list[0]);
var_dump($info);

当我尝试这个时,我得到错误bool(false)错误 所以我尝试使用parse_str 与parse_str我没有得到任何错误

 parse_str($cell,$list );

但我没有在我的数据库中获得输出 我将输出存储在数据库中,我将查询提交到数据库。除了这个反序列化值以外,还存储了所有内容。你可以注意到有

khghg_id,这是foo1187 uri是foo / vtory / 1187 名称是nmart
我想将这些细节存储在我的数据库中,所以我正在使用

'.$info['khghg_id'].'   for sending the data to mysql but mysql stores everything  other than  all unsterilized  values

1 个答案:

答案 0 :(得分:2)

您从数据库中检索序列化文本。

你反序列化它..更改它然后当你将它保存回数据库时你需要将它序列化回来

//retrieve serialized data from database
$arr = unserialize($row['properties']);

//get the desired value
$khghg_id = $arr['khghg_id'];

//now insert $khghg_id in database

从你上面发布的代码中我看到你正在反序列化2次......你真的不需要这样做

$cell =$row9['attachment'];
$list = unserialize($cell);
$info = $list[0]; //this line should make the difference
var_dump($info);