我最近一直在处理一些非常大的表单,我得出的结论是围绕它们创建一个数据库方案并不是最好的选择,因为:
- 我的客户不需要将所有提交的表单作为一个整体进行分析——表单信息仅在每次提交的基础上使用(例如工作申请)。
- 更新这些表单的成本非常高,因为添加和删除数据库字段以及更新 HTML 表单都需要花费大量时间。
- 我想将信息恢复到数组中格式就像它很容易进来一样。
因此,我经常使用 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));
这是解决简单问题的好方法!