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

时间:2011-03-31 14:39:05

标签: php mysql multidimensional-array

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

以下是相关数组的示例:

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

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

非常感谢:)

更新

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

6 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

使用序列化元素制作一个单维数组。您将仅插入一行,每列将包含序列化数组

答案 2 :(得分: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.
    }

我确信有一种更复杂的方法可以实现这一目标,但现在已经有效了!

谢谢大家。

答案 3 :(得分:-1)

你试过json_encode吗?您可以将数组转换为字符串,然后存储它,然后使用json_decode将其转回。

LIVE DEMO

答案 4 :(得分:-1)

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

或者您要将值存储在db?

中的关联记录中

答案 5 :(得分:-1)

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

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