将多维数组的值存储到MySQL中(PHP)

3

我有一个大的多维数组,想要存储到MySQL数据库中。

以下是所涉及数组的示例:

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

数组的值和数据库表中的列都匹配(除了数据库中的行ID)。我看到过不同的方法来实现类似的操作,但在这个解决方案中还没有找到可行的方法。

非常感谢 :)

更新

更新了数组结构,以更清晰地说明数组本身的内容。


对于好问题、标题和名字为“lethalMango”的人,点赞+1。 - Smandoli
6个回答

2
通常情况下,当你有类似这样的嵌套数据时,最好使用两个表来存储,一个用于父级数据,另一个用于子级数据,以便最有效地访问数据。父级表应该包含“父级ID”和任何父级级别的数据,而子表应该包含“子级ID”,一个“父级ID”外键和子级数据(在你的示例中,是三个字符的字符串)。

这通常是正确的,但在某些情况下,存储数组可能很有价值。 - Dutchie432
抱歉,我可能没有在上面清楚地解释。嵌套数据是通过使用array_chunk创建的,以便将其全部正确分隔(分为23组)。每个组都需要作为一行插入数据库中。数组的第一维[0] - [24]只是用来创建分组的。 - lethalMango

0
最终,我花时间使用了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.
    }

我相信有更高级的方法来实现这个,但目前这个方法可行!

谢谢大家。


0

创建一个带有序列化元素的一维数组。您将仅插入一行,每列都包含序列化数组。


-1

这会破坏关系模型。 - outis

-1
如果您需要存储数组本身,请使用serialize()unserialize()将数组作为字符串存储在数据库中。这比Dutchie之前提到的json选项要好得多,因为json可能会出现多维数组的问题。
或者您想要将值存储在关联记录中的数据库中吗?

-1
如果你想储存任意深度嵌套的数组,那么使用json_encode()/json_decode()serialize()/unserialize()是最好的选择。唯一的问题就是你将无法直观地查询数据。
如前所述,根据表格设计模型是最优解。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接