PHP - 从多维数组插入数据库

时间:2017-02-03 20:25:59

标签: php mysql arrays multidimensional-array

我对这个问题有疑问(根据标题)。 这是我的数组

Array
(
    [0] => Array
        (
            [0] => 0
            [1] => 0
        )

    [1] => Array
        (
            [0] => 3
            [1] => 2
        )

    [2] => Array
        (
            [0] => 1
            [1] => 0
        )
)

了解更多细节,你可以看到图片 Multidimensional Array

第一维将始终具有相同的长度(在这种情况下为3)。 我想要实现的是: 我想从这个多维数组中获取数据,以便我可以使用该值来更新我的数据库。语法就像这样(我将使用循环):

$sql = "UPDATE table_name SET column1='".$body[$i]."', column2='".$grip[$i]."', column3='".$gear[$i]."' WHERE `variant`='".$variant[$i]."'";

有可能吗? 在这种情况下,variant列将为A,B。

我已经看到了这些问题

但我仍然不明白。

这是我的代码

 if ($stmt2 = $conn->prepare("SELECT * FROM ms WHERE variant in (SELECT variant FROM pwhorder WHERE times = '$time' AND NOT quantity = 0)")) {
   $stmt2->execute();
   $result2 = $stmt2->get_result();
   $num_of_rows2 = $result2->num_rows;
   while ($row2 = $result2->fetch_assoc()) {
       $amountb1[]=$row2["amount1"];
       $amountb2[]=$row2["amount2"];
       $amountb3[]=$row2["amount3"];
   }
   $stmt2->free_result();
   $stmt2->close();
}

$stock=array($amountb1,$amountb2,$amountb3);

我这样做是因为首先我要将$stock$request进行比较。 $request的代码与$stock类似,只是从不同的表格中获取。

1 个答案:

答案 0 :(得分:0)

这似乎是一个完美的案例,其中关联数组可以很好地解决您的问题。但是,由于您声明问题是使用索引数组,您需要逐步执行每个数组并执行操作,但是您必须维护一个伴随数组值,以便将索引解释为其键。

从查找数组开始,作为数据的伴侣。

$top_level = array('Body', 'Grip', 'Gear');
$second_level = array('A','B');

然后,您将需要处理数据数组并将其存储到其关联的伴随键控数组中。

因此,假设您的多维数组名为$data

for( $d = 0 ; $d < count($data); $d++ )
{
    for( $s = 0; $s < count($data[$d]); $s++ )
    {
        $output[$top_level[$d]][$second_level[$s]] = $data[$d][$s];
    }//END FOR S < DATA{D}
}//END FOR D < COUNT(DATA)

现在这是当前未经测试的代码(我无法通过PHP编译器进行测试)。如果您收到任何错误,请发表评论,我很乐意更新。

如果我理解正确的话,生成的$output数组应该是您要查找的格式化数据。