3

在我的 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
4

1 回答 1

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);
于 2012-05-13T08:26:58.343 回答