我正在尝试在DB中存储临时数据(例如购物车产品,session_data)。我为此选择了YAML而不是serialize()函数。因为人类可以轻松读取YAML数据,并且可以在编程语言之间移植。
如果我将我的temprory数据存储在数据库中,我是否遇到过YAML问题?
答案 0 :(得分:2)
我个人会使用序列化有两个原因:
关于第二点。 Serialize不仅仅转换为它记录类型的字符串,PHP调用对象上的函数,因此您可以选择序列化的内容以及在取消序列化时如何处理数据。
直接从数据库中读取可能并不容易,但是编写一个可以将其拉出来的脚本,将其取消序列化并对数据执行print_r以查看存储的内容不会花费两分钟。
答案 1 :(得分:2)
就个人而言,我不会使用YAML。它太依赖于格式(需要新行,空格等),PHP中没有原生解析器。相反,我会使用JSON。处理本地是微不足道的,并且是人类可读的(没有YAML,但比序列化更多)。这是两全其美的。
但是,有了这个说,你真的应该问自己一个问题,为什么你要在数据库的字段中存储复杂数据结构的序列化表示...对于大多数情况,它可能更好地存储数据的标准化表示(因此可以轻松搜索,等等)。存储序列化数据并不“坏”,但它可能不是最佳选择,也可能是正确选择,具体取决于您尝试执行的操作。它通常远比使用Entity-Attribute-Value商店好,但你需要真正考虑你正在做什么来决定它是否是正确的。
答案 2 :(得分:1)
只要确保你逃避一切有潜在危险,即用户输入,你就可以了。