2015-08-20 57 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"; 


}