使用 PHP 将 JSON 解析为 MySQL


Parsing JSON to MySQL with PHP

我有一些 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()函数。