如何遍历数组以插入数据库

Posted

技术标签:

【中文标题】如何遍历数组以插入数据库【英文标题】:How to loop through arrays to insert into database 【发布时间】:2015-11-14 10:07:15 【问题描述】:

我有三个数组,我想在位置 [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" 
 

有没有办法将所有 CompanyA 组合到一个数组中以更新或所有数组的数组 [o] 位置,然后 [1] 等?

【问题讨论】:

您没有插入功能。您只有一个来更新数据,而不是插入它。根据您的表结构,您可以将更新查询更改为插入或更新dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html 为什么您的input:hiddeninput:checkbox 都设置为相同的名称?当您提交时,姓氏将覆盖以前的。 看起来像多维数组中的数据,循环中的数据访问不正确,能否请您显示数据在 var_dump() 中是如何列出的? 隐藏和复选框的名称相同,因为:***.com/questions/32105188/… 并没有真正回答您的问题(对不起!),但由于您的代码可能容易受到 sql 注入的攻击,您可能会发现值得一读 some of the answers to this question 【参考方案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";


  

【讨论】:

以上是关于如何遍历数组以插入数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何遍历一组动态表单输入并将它们插入到多个表中?

在vba中从查询填充数组然后将数据插入表中

SQLite Room 快速插入 JSON 数组

Postgres 9.6 如何遍历数组并将每个数组值插入表中?

laravel:将视图插入数组

五十五深入插入排序和选择排序