【发布时间】:2016-12-22 05:23:50
【问题描述】:
我 1000+ 的 SQL 数据行如下所示
umeta_id | user_id | meta_key | meta_value
433369 | 44 | all_contests | a:1:{s:12:"all_contests";a:2:{i:5011;a:1:{s:7:"entries";i:3;}i:8722;a:1:{s:7:"entries";i:3;}}}
433368 | 63 | all_contests | a:1:{s:12:"all_contests";a:2:{i:5032;a:1:{s:7:"entries";i:3;}i:8724;a:1:{s:7:"entries";i:3;}}}
当你反序列化其中一个值时,你会得到一个如下所示的数组:
Array
(
[all_contests] => Array
(
[5011] => Array
(
[entries] => 3
)
[8722] => Array
(
[entries] => 3
)
)
)
我正在尝试从给定比赛 ID 的所有用户中创建一个排行榜。 “all_contests”键包含一个数组,该数组由用户注册的所有竞赛的 id 键控。里面是给定比赛的条目。
查询需要查看包含“all_contests”键的所有行,并找到给定比赛 ID 的 10 个最高条目值。
我什至不确定是否可以按照我想要的方式可靠地搜索一段序列化数据。
【问题讨论】:
-
天啊。这完美地展示了如何将数据存储为序列化数组使得从 SQL 查询中使用该数据几乎是不可能的
-
您必须选择您可能感兴趣的行,然后在 PHP 中选择
unserialize()该数据,然后计算出您想对每一行做什么,并可能构建另一个数据数组然后可以处理以获取您需要的信息
标签: php mysql sql serialization