2015-08-20 61 views
1

我有三個數組,我想添加數組在位置[0],然後[1],然後[2]等數組,所以我可以插入數值爲三個字段放入我的數據庫。如何通過數組來循環插入數據庫

首先我連接到我的數據庫,並得到我的結果:

<?php 
require_once("con.php"); 
$p = payment(); 
$result = mysqli_query($mysqli, $p); 
?> 

然後,我建我的形式:

<form> 
    <table> 
     <?php while ($res = mysqli_fetch_array($result)) { ?> 
      <tr> 
       <td class="paid"> 
        <input type="hidden" value="1" name="paid[<?php echo $res['name']; ?>]"> 
        <input type="checkbox" value="0" name="paid[<?php echo $res['name']; ?>]" 
         <?php 
         if ($res["paid"] == 0) { 
          echo "checked"; 
         } 
         ?>> 
       </td> 
       <td class="active"> 
        <input type="hidden" value="1" name="active[<?php echo $res['name']; ?>]"> 
        <input type="checkbox" value="0" name="active[<?php echo $res['name']; ?>]" 
         <?php 
         if ($res["active"] == 0) { 
          echo "checked"; 
         } 
         ?> > 
       </td> 
       <input type="hidden" name="ID[<?php echo $res['name']; ?>]" value="<?php echo $res['ID']; ?>"> 
      </tr> 
     <?php } ?> 
     <tr> 
      <td> 
       <input type="submit" name="submit" value="Update"> 
      </td> 
     </tr> 
    </table> 
</form> 

這是我的PHP處理程序:

<?php 

function updatePayment($paid, $active, $ID) { 
    $uc = "UPDATE `company` SET `paid`='$paid', `active`='$active' WHERE `ID`='$ID'"; 
    return $uc; 
} 

$paid = $_POST['paid']; 
$active = $_POST['active']; 

foreach ($_POST as $key => $value) { 
    $ID = $ID[$key]; 
    $paid = $paid[$key]; 
    $active = $active[$key]; 

    $up = updatePayment($paid, $active, $ID); 
    $r = mysqli_query($mysqli, $up); 
    echo "Information stored successfully"; 

} 


?> 

權現在它沒有插入任何東西,我可以看到這些陣列中有正確的數據,其中var_dump($_POST);但我似乎無法讓它插入到數據庫中。我試過一些for循環,foreach,但不知道我做得對。

任何想法?

的var_dump示出了該:

array(4) { 
    ["paid"]=> array(3) { 
     ["CompanyA"]=> string(1) "0" 
     ["CompanyB"]=> string(1) "0" 
     ["CompanyC"]=> string(1) "0" 
    } 
    ["active"]=> array(3) { 
     ["CompanyA"]=> string(1) "1" 
     ["CompanyB"]=> string(1) "1" 
     ["CompanyC"]=> string(1) "0" 
    } 
    ["ID"]=> array(3) { 
     ["CompanyA"]=> string(2) "12" 
     ["CompanyB"]=> string(2) "13" 
     ["CompanyC"]=> string(2) "14" 
    } 
    ["submit"]=> string(6) "Update" 
} 

有一種方法將所有公司A一起成陣列來更新或所有陣列[O]位置的陣列,然後[1]等?

+0

你沒有到位的插入功能。你只有一個來更新數據,而不是插入它。根據您的表格結構,您可以更改更新查詢以插入或更新https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html –

+0

爲什麼您有兩個輸入:隱藏「和」輸入:複選框「設置爲相同的名稱?當你提交這個名字時,姓氏會覆蓋之前的名字。 – CodeGodie

+0

看起來像多維數組中的數據,並且循環中的數據訪問不正確請問如何顯示var_dump()中列出的數據? – Yogendra

回答

1

這是我想出的答案。希望這有助於在未來的人:

我的PHP處理程序:

<?php 
require_once("con.php"); 

$ID=$_POST['ID']; 
$paid=$_POST['paid']; 
$active=$_POST['active']; 
$count=count($ID); 

$n= implode(", ", $ID); 
$ID=explode(',',$n); 

$p=implode(", ", $paid); 
$paid=explode(',',$p); 

$a=implode(", ", $active); 
$active=explode(',',$a); 

$i=0; 
for ($i; $i<$count; $i++) 
{ 

    echo $paid[$i]; 
    echo $active[$i]; 
    echo $ID[$i]; 



//adds updated info to database 
$uc=updateCompany($paid[$i],$active[$i],$ID[$i]); 
$r = mysqli_query($mysqli,$uc); 
echo "Information stored successfully"; 


}