【发布时间】:2012-07-11 01:37:02
【问题描述】:
我正在尝试反序列化存储在 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表中的json数据
{"purchase_amount":500,"more":7,"less":11.5}
以下是php中的json解码
var_dump(json_decode($row->getTransportaionCost())); //null
谁能告诉我是什么问题?
【问题讨论】:
-
你试过
unserialize(stripslashes($row->getTransportaionCost()));吗? -
你添加了斜线,然后你想在删除斜线之前反序列化
-
是的,我试过反序列化(stripslashes($row->getTransportaionCost()));但仍然无法正常工作。
-
@Hardik 它不是 json 字符串,您是否尝试过
var_dump($row->getTransportaionCost())来查看实际值是多少?因为它实际上可能是双斜线,顺便说一句,你不需要首先添加斜线。 -
看起来引号正在被编码。在反序列化之前尝试运行 html_entity_decode。
标签: php json serialization deserialization