所以我有一个应用程序和一个非常烦人的客户,他们经常改变主意,所以我决定将一些数据存储为 JSON 对象。
我有一个匹配系统,我将注册匹配的用户存储为用户 ID 数组的 JSON 对象版本。
我想显示用户已注册的所有匹配项作为我的过滤器选项之一,因此我基本上需要查看该用户的 ID 是否存储在文本类型数据对象中。
我能想到的两种方法是:
查询每个匹配项并对对象进行 JSON 解码,然后使用
in_array
查看它们是否在匹配项中(我没有这样做)。只需使用
LIKE
查询在 JSON 文本中搜索“[userid]”(我就是这样做的)。
有没有更好的方法来做这样的事情?比如 MySQL 是否有更好的内置函数来处理这样的事情?
最佳答案
尝试将用户数据存储在关系数据库(例如 MySQL)中的 JSON 对象中是错误的。您的数据库不是面向对象的,而是关系型的。遵循关系数据库的规则对你很有帮助。您最好构建一个良好的数据库 (DB) 结构并进行准确的 MySQL 查询。
如果您至少将数据库保留在 third normal form 内,您会发现当您的客户改变主意时(一次又一次……一次又一次……)您可以添加和更改用户属性,因为给定表中将保留更少的数据,因此您可以添加和更改小表而不会对系统产生巨大影响。
数据库中的另一个选项是创建一个表,该表具有按 ID、名称和值划分的各种属性。
关于php - 在 php 中从 mysql 查询 JSON db 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8184831/