dongou3158 2016-07-26 06:14
浏览 124
已采纳

从数据库反序列化序列化字符串时出现错误消息的原因?

Well, I have following array and variables and it's output is bellow :

`print_r($menu_ex_qnt);`

Array
(
    [0] => 1
    [1] => 2
)


print_r($menu_extra_item_name);

Array
(
    [0] => 238
    [1] => 239
)

$final_ex = array_combine($menu_ex_name, $menu_ex_qnt);        
print_r($final_ex);

Array
(
    [238] => 1
    [239] => 2
)

echo $final_ex = serialize($final_ex);

a:2:{i:238;s:1:"1";i:239;s:1:"2";}

Now, I am inserting this $final_ex variable to database.

But when I get this variable from database and try to unserialize it then it's showing me following error message :

echo unserialize($p_ext_items);
Note : This $p_ext_items contain the serialize string e.g: a:2:{i:238;s:1:"3";i:239;s:1:"1";}

Notice: unserialize(): Error at offset 11 of 54 bytes .......

why ?

What I actually want

There are 2 variables $menu_ex_qnt and $menu_extra_item_name. I want to save these 2 variables value not key to the database. So that, in final variable there will be key and value pair.

For e.g:

238 => 1
239 => 2
  • 写回答

1条回答 默认 最新

  • dskyx46424 2016-07-26 06:31
    关注

    Since you said that $p_ext_items contains the serialize string which is :- a:2:{i:238;s:1:"1";i:239;s:1:"2";}

    and you did:-

    $p_ext_items = htmlspecialchars($result['p_ext_items']);
    echo unserialize($p_ext_items);
    

    You have to remove first line, not needed in this case, so simply you need to do:-

    print_r(unserialize($p_ext_items)); // it will give array so use print_r
    

    Note:- Working example for you:- https://eval.in/611959

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 设计简单目录管理系统,要满足以下内容
  • ¥15 关于九十度混合耦合器信号分析问题
  • ¥15 Cesm如何关闭不用的模块呢
  • ¥15 vue2两层数据导出为excle
  • ¥15 有人能帮我做一下这个项目吗
  • ¥15 网络上传速率比下载速率高
  • ¥15 (标签-游戏|关键词-网页游戏)
  • ¥15 这个咋搞🥹可能需要手把手教
  • ¥15 接口和关键字的问题,多选
  • ¥15 yolov5s模型下载就卡住,没有运行结果