【问题标题】:Store multidimensional array values into MySQL (PHP)将多维数组值存储到 MySQL (PHP)
【发布时间】:2011-07-26 23:23:59
【问题描述】:

我有一个大型多维数组,我想将它存储到 MySQL 数据库中。

以下是相关数组的示例:

Array
(
    [user1] =>
        [name] => abc
        ...
        [address] => xyz
    ...
    ...
    [user2] =>
        [name] => abc
        ...
        [address] => xyz
}

数组值和数据库表列都匹配(除了数据库中的rowid)。我已经看到了做类似事情的各种方法,但还没有找到在这个解决方案中有效的方法。

非常感谢:)

更新

更新了数组结构,以便更清楚地了解数组本身的内容。

【问题讨论】:

  • +1 表示好问题、标题和名称“lethalMango”。

标签: php mysql multidimensional-array


【解决方案1】:

通常当您有这样的嵌套数据时,有两个表是有意义的。一个用于父级,一个用于子级,以便最有效地访问数据。父表将具有“父 ID”和任何父级数据,子表将具有“子 ID”、“父 ID”外键和子数据(在您的示例中为三个字符串)。

【讨论】:

  • 这在 99% 的情况下都是正确的,但是,有时存储数组可能很有价值。
  • 对不起,我上面可能没有解释清楚。嵌套数据是通过使用 array_chunk 创建的,以使其全部正确分离(分成 23 个组)。每个组都需要作为一行插入到数据库中。数组 [0] - [24] 的第一个维度只是用于创建组。
【解决方案2】:

用序列化的元素创建一个一维数组。您将只插入一行,每列将包含序列化数组

【讨论】:

    【解决方案3】:

    最后我花时间使用了一个 for 循环并实现了以下目标:

    for ($i = 0; $i < 25; $i++)
        {
            $name = $parts[$i][0];
            $address = $parts[$i][22];
    
            // Run SQL query using the variable values rather than the array values.
        }
    

    我确信有一种更复杂的方法可以实现这一点,但现在可行!

    谢谢大家。

    【讨论】:

      【解决方案4】:

      如果您需要存储数组本身,请使用serialize()unserialize() 将数组作为字符串存储在数据库中。比前面提到的 json 选项 Dutchie 好得多,因为 json 可能会出现多维数组的问题。

      或者您想将值存储在数据库中的关联记录中?

      【讨论】:

        【解决方案5】:

        如果您要存储任意深度嵌套的数组,那么json_encode()/json_decode()serialize()/unserialize() 将是您的最佳选择。唯一的问题是您将无法直观地查询数据。

        如前所述,按照表格对表格进行建模是最佳选择。

        【讨论】:

          【解决方案6】:

          你试过json_encode吗?你可以把你的数组变成一个字符串,存储起来,然后用json_decode把它转回来。

          LIVE DEMO

          【讨论】:

          • 这破坏了关系模型。
          猜你喜欢
          • 2011-04-05
          • 1970-01-01
          • 2016-07-10
          • 2012-01-12
          • 1970-01-01
          • 2015-11-24
          • 1970-01-01
          • 2013-09-04
          • 2018-02-21
          相关资源
          最近更新 更多