【问题标题】:unserialize not working反序列化不起作用
【发布时间】: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


【解决方案1】:

问题来自当您将数据存储在数据库中时,那些反斜杠不应该在这里。去掉addlashes,效果会更好

【讨论】:

    猜你喜欢
    • 2020-10-16
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多