【问题标题】:Unserialize returns false反序列化返回 false
【发布时间】:2013-03-25 14:04:42
【问题描述】:

我正在序列化存储在数据库中的数据:

a:10:{s:4:"名称";a:2:{s:4:"类型";s:8:"排除";s:5:"值";s:0:" ";}s:8:"keywords";a:2:{s:4:"type";s:8:"excluded";s:5:"value";s:0:"";}s: 11:"描述";a:2:{s:4:"类型";s:8:"排除";s:5:"值";s:0:"";}s:3:"sku" ;a:2:{s:4:"类型";s:8:"排除";s:5:"值";s:0:"";}s:12:"制造商";a:2: {s:4:"类型";s:8:"排除";s:5:"值";s:0:"";}s:11:"程序名";a:2:{s:4: "类型";s:8:"排除";s:5:"值";s:0:"";}s:12:"数据提供者";a:2:{s:4:"类型";s :8:"排除";s:5:"值";s:0:"";}s:11:"lastupdated";a:1:{s:5:"值";N;}s:8 :"货币";a:1:{s:5:"价值";s:0:"";}s:5:"价格";a:1:{s:5:"价值";s:3 :"100";}}

当我反序列化时,它返回空数据,但是当我回显数据并从浏览器复制 o/p 并将其静态放置以进行反序列化时,它工作正常。

谁能告诉我可能是什么问题?

【问题讨论】:

  • 为我工作。向我们展示您如何对其进行反序列化。
  • 数据库中的列可能会切断一些数据
  • 三票赞成?呸!制作一个测试用例,因为正如@Mihai 所证明的那样,这里没有问题

标签: php serialization


【解决方案1】:

您在上面提供的内容确实有效并且应该有效。

在数据库中保存序列化数据时,将列的长度设置为非常高。

如果你认为序列化的数据不会超过 1000 个字符,那就加一半就可以了。

您可能希望将VARCHAR(1500) 用于您认为大约 1000 个字符长的可序列化数据。

我几乎可以保证您的问题是因为数据库正在存储您的序列化数据并对其进行裁剪以使其适合您的列。

【讨论】:

  • 在我的例子中,它是BLOB 列(65535 字节),结果证明这还不够。将其更改为 MEDIUMBLOB 有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多