4

我有一些我想在 MySQL 上记录的 JSON 文件,我通读了 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 表。如果没有“道具”部分,我可以读取、使用json_decode()和循环遍历数组以存储所有其他值,但“道具”部分让我感到困惑。

我的表应该有字段,对吧?

  • 播放时间 * INT
  • communityVisibilityState * INT
  • 时间创建 * INT
  • 道具 * ??

如何将其存储在 MySQL 的表中?

一般;

mysqli_query($con,"INSERT INTO my_jsonDB (hoursPlayed, communityVisibilityState, timeCreated)
VALUES (21775, 3,1261107470)");

我的情况呢?

4

3 回答 3

1

是时候研究一下MySQL 中的外键约束了。基本上,您的表结构将如下所示:

  • 表#1 用户 -UserID | hoursPlayed | communityVisibilityState | timeCreated
  • 表#2 用户属性 - userKey | level | quality | origin

由于您使用的是 MySQL,因此您可以查看主键的 自动增量UserID。您将使用此主键作为外键插入UserProperty表中。

整个过程如下所示:

  • 在第一个表中插入一行。获取插入的主键(即第一列)。
  • 遍历所有“道具”字段:
    • 接下来,使用您在上述步骤中获得的密钥,并在将当前“prop”插入第二个表中时使用它。
于 2013-10-20T05:26:06.813 回答
0

你的 props 应该在他们自己的表中,并且有一个指向 my_jsonDB 的外键引用。

例如,您应该有一个名为 Props 的表。

列将是 id、my_jsonDB_id、level、quality、origin。

第一行可能是:1,1, 53,6,0

然后,当您插入到 Props 表中时,您只需将 my_jsonDB_id 设置为 my_jsonDB 表中与 prop 数据相关的 id。

看看这个例子:http ://www.w3schools.com/sql/sql_foreignkey.asp

于 2013-10-20T05:21:36.593 回答
0

例如,您也可以使用Text字段。serialize()并在将其保存到数据库之前使用函数。

于 2013-10-20T05:32:51.280 回答