2012-07-11 65 views
-1

我想反序列化存储在mysql表中的字符串。反序列化不起作用

以下是存储在mysql表中的字符串。

a:3:{s:15:\"purchase_amount\";d:500;s:4:\"more\";d:7;s:4:\"less\";d:11.5;} 

在插入时我写了下面的代码。

addslashes(serialize(array('purchase_amount' => $values['purchase_amount'], 'more' => $values['transportaion_cost_gretter'], 'less' => $values['transportaion_cost_lesser']))) 

在检索时我写了下面的代码。

unserialize(stripslashes($row->getTransportaionCost())); 

我收到以下错误。

Notice: unserialize() [function.unserialize]: Error at offset 5 of 98 bytes 

编辑:

我尝试json_encode和json_decode ...

下面是MySQL表

{"purchase_amount":500,"more":7,"less":11.5} 

JSON数据下面是在PHP的JSON解码。

var_dump(json_decode($row->getTransportaionCost())); //null 

可以任何一个告诉我是什么问题?

+3

你试过'反序列化(stripslashes($ row-> getTransportaionCost()));'? – 2012-07-11 12:26:06

+0

你添加斜线,然后你想反序列化删除斜杠 – 2012-07-11 12:26:58

+0

是的我试过反序列化(stripslashes($ row-> getTransportaionCost()));但仍然无法正常工作。 – hardik 2012-07-11 12:29:07

回答

0

问题来自将数据存储在数据库中时,这些反斜线不应该在这里。删除addslashes,它会更好地工作

+0

看看编辑。 – hardik 2012-07-11 12:44:39

+0

做一个'var_dump($ row-> getTransportaionCost());'也... – 2012-07-11 12:59:35