如何使用php将嵌套的数据数组插入mysql

时间:2016-03-30 05:25:47

标签: php mysql arrays

目前我有一个嵌套数组,它有三个数组(项目,客户,地址),当它通过

输出时,它们如下所示
print_r($_POST);

Array
(
    [items] => Array
        (
            [0] => Array
                (
                    [item_id] => 1
                    [item_price] => 2
                    [quantity] => 11
                )

            [1] => Array
                (
                    [item_id] => 12
                    [item_price] => 13
                    [quantity] => 14
                )

            [2] => Array
                (
                    [item_id] => 13
                    [item_price] => 14
                    [quantity] => 15
                )

            [3] =>; Array
                (
                    [item_id] => 16
                    [item_price] => 17
                    [quantity] => 18
                )

            [4] => Array
                (
                    [item_id] => 18 
                    [item_price] => 38
                    [quantity] => 38
                )

        )

    [customer] => 111
    [address] => 171
)

我想将这些数据插入到一个表中,每个元素值都属于其各自的字段。

目前我的php代码如下所示

if(is_array($_POST)){
    foreach($_POST as $key => $value){

    $item_id = (int) $value['item_id'];
    $item_price = (int) $value['item_price'] ;
    $quantity = (int) $value['quantity'] ;

    $sql = "INSERT INTO orderItems(item_id, item_price, quantity) values ('$item_id', '$item_price', '$quantity')";
    mysql_query($sql) or exit(mysql_error()); 
    }
}

它无法正常工作。我是新来的。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

你的数组位于items数组内,所以你可以像这样重写foreach循环:

foreach($_POST['items'] as $key => $value){ 
//Remaining same code
}

答案 1 :(得分:1)

试试此代码

$sql = "INSERT INTO orderItems(item_id, item_price, quantity) values ";

foreach($_POST['items'] AS $key=>$value)
{
    $item_id = (int) $value['item_id'];
    $item_price = (int) $value['item_price'] ;
    $quantity = (int) $value['quantity'] ;
    $sql .= "('$item_id', '$item_price', '$quantity'), ";
}
$sql = substr($sql, 0, -2);
mysql_query($sql) or exit(mysql_error());

您必须在$_POST['items']块中使用foreach。此外,您应该尝试使用所有这些值创建单个查询并执行一次而不是一次又一次地执行。