【问题标题】:Get the greatest value into serialized data with php into mysql column用php到mysql列中获取序列化数据的最大值
【发布时间】:2009-11-10 18:19:33
【问题描述】:

将最大价值转化为序列化数据的方法是什么。例如,我在“评级”列中有这个:

a:3:{s:12:"total_rating";i:18;s:6:"rating";i:3;s:13:"total_ratings";i:6;}

如何通过查询选择 3 个最高的“评分”?

非常感谢

【问题讨论】:

  • 这个数据是什么格式的?我以前从未见过。
  • 看起来像一个序列化的 PHP 对象

标签: php mysql serialization


【解决方案1】:

如果您想在 SQL 中执行此操作,您可能正在查看一堆 SUBSTRING_INDEX(field,':',@offset) 调用。这将是非常可怕。在数据库中存储对象的序列化版本是为了方便持久化,但不应将其视为永久存储方法。如果您坚持使用序列化字符串进行查询,您就失去了关系数据库的所有功能,您还不如将字符串存储在文本文件中。

最好的选择是仅将序列化字符串用于持久性目的(例如记住用户上次访问时所做的事情),并将计算所需的数据存储在正确规范化的字段和表中。然后你就可以轻松查询你需要知道的内容了。

另一个选项是从字段满足某些其他条件的行中选择所有“评级”字符串(例如 date_added 字段在上周内),重新实例化应用层中的所有对象并在那里进行比较。

【讨论】:

  • 感谢 dnagirl,我会考虑将数据分成列的选项。
猜你喜欢
  • 2012-04-05
  • 2018-10-14
  • 2012-06-05
  • 2020-12-08
  • 2023-02-25
  • 1970-01-01
  • 2014-04-26
  • 1970-01-01
  • 2015-12-30
相关资源
最近更新 更多