开放的编程资料库

当前位置:我爱分享网 > PHP教程 > 正文

PHP Serialize() 和 Unserialize() 问题

我最近一直在处理一些非常大的表单,我得出的结论是围绕它们创建一个数据库方案并不是最好的选择,因为:

  1. 我的客户不需要将所有提交的表单作为一个整体进行分析——表单信息仅在每次提交的基础上使用(例如工作申请)。
  2. 更新这些表单的成本非常高,因为添加和删除数据库字段以及更新 HTML 表单都需要花费大量时间。
  3. 我想将信息恢复到数组中格式就像它很容易进来一样。

因此,我经常使用 serialize()unserialize() 函数。序列化数组可以将信息保存在数组格式中,可以这么说,但在一个长字符串中。无论如何,在对我已经序列化的一些信息进行反序列化测试时,我遇到了以下错误:

Notice: unserialize(): Error at offset 2 of 52 bytes in file.php on line 130

事实证明,如果在任何数组值中存在 “、’、: 或 ;,序列化就会损坏。我在 PHP.net 上找到了针对此问题的以下修复方法:

//to safely serialize
$safe_string_to_store = base64_encode(serialize($multidimensional_array));

//to unserialize...
$array_restored_from_db = unserialize(base64_decode($encoded_serialized_string));

这是解决简单问题的好方法!

未经允许不得转载:我爱分享网 » PHP Serialize() 和 Unserialize() 问题

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏