2016-03-30 5 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 
) 

Я хотел бы вставьте эти данные в одну таблицу с каждым значением элемента, принадлежащим соответствующему полю.

В настоящее время мой 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 Injection, поскольку представленные пользователем данные даже не сбежали! ** ВСЕ ** пользовательские данные должны быть подтверждены ** ВСЕГДА **, чтобы убедиться, что пользователь не пытается отправить мусор/нежелательный/спам в базу данных. Также расширение mysql_ *, которое вы используете, было ** удалено ** из версии 7 PHP. Наконец, как только данные, представленные пользователем, были подтверждены, подготовленный стат должен использовать ** ВСЕГДА ** использовать – SpacePhoenix

ответ

1

Вы массив лежит внутри items массива так перепишет вам foreach цикл вроде этого:

foreach($_POST['items'] as $key => $value){ 
//Remaining same code 
} 
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 блоке. Кроме того, вы должны попытаться создать один запрос, используя все эти значения, и выполнить его один раз вместо выполнения снова и снова.

+0

поблагодарить u его работу –

+0

приветствую, пожалуйста, отметьте это справа –

Смежные вопросы