2011-03-31 122 views
3

我有一个大的多维数组,我想存储到MySQL数据库中。将多维数组值存储到MySQL(PHP)

下面是所讨论的阵列的例子:

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

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

非常感谢:)

更新

更新了阵列结构给出一个清晰的概念什么数组本身英寸

+0

+1为好的问题,标题和名称“lethalMango”。 – Smandoli 2011-03-31 14:47:15

回答

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. 
    } 

我敢肯定有一个更复杂实现这一目标的方式,但现在这个工作!

谢谢大家。

2

通常,当你有这样的嵌套数据时,有两个表是有意义的:一个是父表,一个是子表,这样才能最有效地访问数据。父表将具有“父ID”和任何父级数据,并且子表具有“子ID”,“父ID”外键和子数据(在本例中为三个字符串)。

+0

这是真实的99%的时间,但是,可能有一段时间存储阵列是有价值的。 – Dutchie432 2011-03-31 14:50:05

+0

对不起,我可能没有解释清楚上面。嵌套的数据是通过使用array_chunk来正确地(分成23组)来创建的。每个组需要作为一行插入到数据库中。数组[0] - [24]的第一个维度就是创建组的第一个维度。 – lethalMango 2011-03-31 14:51:34

-1

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

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

-1

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

如前所述,根据您的表格建模将是最优的。

0

使用序列化元素构成一维数组。您将插入只有一个行和每列将包含序列化数组