MySQL插入嵌套数组

时间:2019-06-04 07:51:02

标签: php mysql arrays nested

我正在尝试使用PHP / MySQL将此嵌套数组插入数据库:

[type] => Array
    (
     [0] => ready-made
     [1] => ready-made
     )

[company_name] => Array
    (
     [0] => Nevim
     [1] => sadasdsa
    )

[ico] => Array
    (
     [0] => 55
     [1] => 545
    )

第一个键(类型等)是列,第二个键(数字)是行。  但是我无法发现最简单的方法,甚至无法以任何方式将其插入数据库。

2 个答案:

答案 0 :(得分:2)

我假设您已与数据库建立连接,并且在此示例代码中,我使用$mysqli作为保持连接的变量。

您需要做的就是在一个数组的数组上循环,让我们使用type,然后使用当前类型数组的索引来引用其他两个数组的正确出现,像这样。

$data = [
    'type' => ['ready-made', 'ready-made'],
    'company_name' => ['Nevim', 'sadasdsa'],
    'ico' => [55, 545]

];

$sql = 'INSERT INTO table_name (type, company_name,ico) VALUES(?,?,?)';
$stmt = $mysqli->prepare($sql);
foreach ($data['type'] as $idx => $type) {
    $stmt->bind_param('ssi', 
                        $type,
                        $data['company_name'][$idx],
                        $data['ico'][$idx]
                    );
    $stmt->execute();
}
  

我在这里使用了MYSQLI_ API,但是如果您使用的是PDO,请在评论中告诉我,我也会添加它

     

您可能还应该检查3个数组的长度是否相同,就好像其中一个数组比另一个数组短一样。

如果您使用的是PDO

$sql = 'INSERT INTO table_name (type, company_name,ico) VALUES(?,?,?)';
$stmt = $pdo->prepare($sql);
foreach ($data['type'] as $idx => $type) {
    $params = [$type, $data['company_name'][$idx], $data['ico'][$idx]];
    $stmt->execute($params);
}

答案 1 :(得分:-1)

使用foreach遍历数组并将其插入

foreach($type as $key=>$value) {
    $sql = "insert into table (type,company_name,ico) values('$value','company_name[$key]','ico[$key]')"

}