2016-06-07 86 views
-1

一個數組被稱爲「works」。它看起來像這樣:通過foreach循環將PHP-多維數組轉換爲Db

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

嗨你可以試試這個。

<?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意味着typedescription等都是相同的length所以我用$works['type']計算forloop步驟