2016-03-30 17 views
-1
を使用してMySQLへのデータのネストされた配列を挿入する

現在、私は持っているそれスルー出力はどのようにPHP

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 
) 

は私がしたいときは、次のように見える3つの配列(項目、顧客、アドレス)を持つネストされた配列各要素値がそれぞれのフィールドに属する1つのテーブルにこのデータを挿入します。

現在私の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()); 
    } 
} 

のように見えるそれが正常に動作していません。私はこれに新しいです。誰でも助けることができますか?

+1

あなたが提出されたデータがエスケープされていないため、SQLインジェクション攻撃のコードで座っています。 ** ALL **ユーザーから提出されたデータは、ユーザーがゴミ/迷惑メール/迷惑メールをデータベースに送信しようとしていないことを確認するために常に**検証されるべきです。また、使用しているmysql_ *拡張機能はPHPのバージョン7から**削除**されました。最後に、ユーザーから提出されたデータが検証されたら、準備された書類が常に使用されるべきです** – SpacePhoenix

答えて

1

あなたの配列は、このようなitems配列ので、あなたを書き換えるforeachループの内側にある:

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

あなたはforeachブロックで$_POST['items']を使用する必要があり、このコード

$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()); 

を試してみてください。また、これらの値をすべて使用して1つのクエリを作成し、何度も繰り返し実行するのではなく、1回実行するようにしてください。

+0

その作業に感謝します –

+0

ようこそ –