在我的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
答案 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);