2014-09-10 5 views
0

Вопрос только после моего вопроса previous question. При получении значений из массива, мой код это:Как вставить многомерный массив в php?

 for ($i=0; $i<count($entries);$i++) 
      { 
       $pcode = substr($entries[$i][0],0,-2); 
       $sku = substr($entries[$i][0],2); 
       $aprice = $entries[$i][1]; 
       $beginv = $entries[$i][2]; 
       $delivery = $entries[$i][3]; 
       $endinv = $entries[$i][4]; 
       $offtake = $entries[$i][5]; 
       $bo = $entries[$i][6]; 
       $shelf = $entries[$i][7]; 
       $gondola = $entries[$i][8]; 
       $chillers = $entries[$i][9]; 
       $mass = $entries[$i][10]; 
       $other = $entries[$i][11]; 
       $total = $entries[$i][12]; 

       $statement = "INSERT INTO `report_details` VALUES ('$id', '$pcode', '$sku', '$aprice', '$beginv', '$delivery', '$endinv', '0', '0', '$offtake, '0', '0', '0', '$bo', '$shelf', '$gondola', '$chillers', '$mass', '$other', '$total')"; 
       $result = mysqlparseradd($statement,$db); 

       if($result) 
       {echo "YES";} 
       else 
       {echo "NO";}  
      } 

И мой массив так:

Array 
(
    [0] => Array 
     (
      [0] => 0111 
      [1] => 260.00 
      [2] => 23 
      [3] => 34 
      [4] => 3 
      [5] => 54 
      [6] => 1 
      [7] => 2 
      [8] => 4 
      [9] => 5 
      [10] => 12 
      [11] => 23 
      [12] => 46 
     ) 

    [1] => Array 
     (
      [0] => 0214 
      [1] => 22.00 
      [2] => 32 
      [3] => 4 
      [4] => 11 
      [5] => 25 
      [6] => 4 
      [7] => 12 
      [8] => 23 
      [9] => 5 
      [10] => 2 
      [11] => 2 
      [12] => 44 
     ) 

    [2] => Array 
     (
      [0] => 0313 
      [1] => 25.00 
      [2] => 5 
      [3] => 52 
      [4] => 12 
      [5] => 45 
      [6] => 12 
      [7] => 5 
      [8] => 6 
      [9] => 7 
      [10] => 12 
      [11] => 3 
      [12] => 33 
     ) 

) 

Дело с этим, я всегда получаю значение NO, что означает, что он не добавляется в базу данных. Мой вопрос в том, что не так с кодом, который у меня есть, что он не вставлен в базу данных? Я отлично справился, когда вставил только одну строку данных, но не имел нескольких строк данных.

EDIT

Когда я печатаю мой $statement результат заключается в следующем:

INSERT INTO `report_details` VALUES ('JJ1234567890_140822_140824_1020001', '01', '11', '260.00', '23', '34', '3', '0', '0', '54, '0', '0', '0', '1', '2', '4', '5', '12', '23', '46') 

только одно значение массива добавляется. Мой mysqlparseradd - это функция, которая действует как mysqli_query. Он выполняет запрос.

+0

Используйте mysqli-> ошибку, чтобы узнать, в чем проблема. Я не знаю, что делает ваш 'mysqlparseradd', и поэтому я не могу вам помочь. – PatrickB

+1

И, пожалуйста, распечатайте заявление $. – unska

+0

@unska Я обновил свой вопрос – user3771102

ответ

2

У вас есть синтаксическая ошибка.

Используйте это.

$statement = "INSERT INTO `report_details` VALUES ('$id', '$pcode', '$sku', '$aprice', '$beginv', '$delivery', '$endinv', '0', '0', '$offtake', '0', '0', '0', '$bo', '$shelf', '$gondola', '$chillers', '$mass', '$other', '$total')"; 
+0

О! Я вижу! Спасибо! Это было так просто ». Виноват. – user3771102

+0

:) Пометьте пожалуйста, если закончите: D – PatrickB

+1

Готово :) Еще раз спасибо. : D – user3771102

1

Альтернативный способ решения проблемы, используя карту массива и функцию для создания массива предложений значений и вставки их один раз.

<?php 

$statement = "INSERT INTO `report_details` VALUES ".implode(',', array_map(function($entry) use ($id) {return(format_row($id, $entry));}, $entries)); 
$result = mysqlparseradd($statement,$db); 

if($result) 
{ 
    echo "YES"; 
} 
else 
{ 
    echo "NO"; 
} 

function format_row($id, $entry) 
{ 
    $pcode = substr($entry[0],0,-2); 
    $sku = substr($entry[0],2); 
    $aprice = $entry[1]; 
    $beginv = $entry[2]; 
    $delivery = $entry[3]; 
    $endinv = $entry[4]; 
    $offtake = $entry[5]; 
    $bo = $entry[6]; 
    $shelf = $entry[7]; 
    $gondola = $entry[8]; 
    $chillers = $entry[9]; 
    $mass = $entry[10]; 
    $other = $entry[11]; 
    $total = $entry[12]; 
    return "('$id', '$pcode', '$sku', '$aprice', '$beginv', '$delivery', '$endinv', '0', '0', '$offtake', '0', '0', '0', '$bo', '$shelf', '$gondola', '$chillers', '$mass', '$other', '$total')"; 
} 
+0

Спасибо за это! – user3771102

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