2016-06-07 2 views
-1

массив называется «работает». Это выглядит так:PHP-многомерный массив до Db через цикл foreach

Array 
(
    [type] => Array 
     (
      [0] => 1 
      [1] => 5 
     ) 

    [description] => Array 
     (
      [0] => 2 
      [1] => 6 
     ) 

    [hours] => Array 
     (
      [0] => 3 
      [1] => 7 
     ) 

    [amount] => Array 
     (
      [0] => 4 
      [1] => 8 
     ) 

) 

Мне нужно отправить все значения в базу данных (MySQL) за две итерации. Что-то вроде:

INSTERT INTO `works` (`type`, `decsripion`, `hours`, `amount`) VALUES (works[type][0], works[decsription][0], works[hours][0], works[amount][0]); 

INSTERT INTO `works` (`type`, `decsripion`, `hours`, `amount`) VALUES (works[type][1], works[decsription][1], works[hours][1], works[amount][1]); 
+0

Так что вы пробовали? Это не особенно трудная задача. – Darren

+1

Либо используйте цикл for, а затем используйте переменную-счетчик, чтобы получить доступ к каждому значению в цикле или транспонировать массив, а затем использовать цикл foreach – Rizier123

+0

Даррен - я знаю, что это не так сложно, но почему-то я изо всех сил пытался три часа пробовать разные петли. Конечно, я пробовал $ i ++ – Rossitten

ответ

1
for($i=0; $i<count($works['type']); $i++) { 
    $query = "INSERT INTO `works` (`type`, `decsripion`, `hours`, `amount`) VALUES ('{works[type][$i]}', '{works[description][$i]}', '{works[hours][$i]}', '{works[amount][$i]}')"; 
    mysql_query($query); 
} 

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

+0

Позор мне и - спасибо , Timhysniu !!! – Rossitten

0

Hi Вы можете попробовать это.

<?php 
$works = array('type'=>array(1,5),'description'=>array(2,6),'hours'=>array(3,7),'amount'=>array(4,8)); 
    $insert_query = 'INSERT INTO works(type,description,hours,amount) values '; 
    for($i=0; $i<count($works['type']); $i++) { 
       $insert_query .= "('".$works['type'][$i]."','".$works['description'][$i]."','".$works['hours'][$i]."','".$works['amount'][$i]."')," ; 

    } 

    $query = rtrim($insert_query, ','); 
    //echo $query; 
    if(!mysqli_query($con,$query)){ 
     die('Error: ' . mysqli_error($con)); 
    }else{ 
     echo "record added"; 
    } 

В этом я использовал bulk insert into вы можете echoquery, если вы хотите, чтобы увидеть query. По вашему вопросу я предположил, что все array означает type, description и т.д. имеют одинаковую length поэтому я использовал $works['type'] для расчета forloop шаги

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