我有一些 JSON 文件想记录在 MySQL 上,我通读了 SO 中的一些帮助主题,但我遇到了问题。 1 2 3
我的 JSON 看起来像这样;
{
"hoursPlayed": 21775,
"communityVisibilityState": 3,
"timeCreated": 1261107470,
"props": [
{
"level": 53,
"quality": 6,
"origin": 0,
},
{
"level": 10,
"quality": 6,
"origin": 0,
}
]
}
我已经创建了表及其字段,但是当涉及到 JSON 最后一个条目中的"props"数组时,我不知道该怎么做。它本身就是一个数组,它应该有自己的MySQL表。如果没有"props"部分,我可以读取、使用 json_decode()
并遍历数组来存储所有其他值,但"props"部分让我感到困惑。
我的表应该有字段,对吧?
- 小时播放 * 国际
- 社区可见性状态 * INT
- 时间创建 * INT
- 道具*??
如何将其存储在 MySQL 的表中?
通常;
mysqli_query($con,"INSERT INTO my_jsonDB (hoursPlayed, communityVisibilityState, timeCreated)
VALUES (21775, 3,1261107470)");
我的情况呢?
是时候来看看MySQL中的外键约束了。基本上,您的表结构将如下所示:
- 表#1 用户 -
UserID | hoursPlayed | communityVisibilityState | timeCreated
- 表#2 用户属性 -
userKey | level | quality | origin
.
由于您使用的是MySQL,因此可以查看主键UserID
的自动增量。您将使用此主键作为外键插入UserProperty
表中。
整个过程如下所示:
- 在第一个表中插入一行。获取插入的主键(即第一列)。
- 遍历所有"道具"字段:
- 接下来,使用您在上述步骤中获得的密钥,并在第二个表中插入当前"prop"时使用它。
你的 props 应该在它们自己的表中,并且有一个外键引用回到my_jsonDB。
例如,你应该有一个名为 Props 的表。
列将是 id、my_jsonDB_id、级别、质量、原产地。
第一行可能是:1,1, 53,6,0
然后,当您插入 Props 表时,您只需将 my_jsonDB_id 设置为 prop 数据与 my_jsonDB 表中相关的 id。
看这个例子:http://www.w3schools.com/sql/sql_foreignkey.asp
例如
,您也可以使用Text
字段。并在将它保存在数据库中之前使用serialize()
函数。