如何通过foreach循环更新

Posted

技术标签:

【中文标题】如何通过foreach循环更新【英文标题】:How to update through foreach loop 【发布时间】:2017-01-27 07:03:20 【问题描述】:

我想通过 foreach 循环更新数据库中表单字段的数据。我在 test_table ID 和 Input 中有两列。我已经通过 while 循环获取数据并且还打印了值。现在我想更新获取的值。请为此提供一些指导。

这是我的代码,

$sql = "select * from test_table";

 if($result = mysqli_query($conn, $sql))
 
     while($row = mysqli_fetch_array($result))
     
         $inputResult[]=$row;


     

   <form method="POST">    <input type="text" value=<?php
echo $inputResult[0]['Input']; ?> id="$inputResult[0]['ID']">        <input
type="submit" name="submit">    </form>         <?php

if (isset($_POST['submit'])
    
    $input = $inputResult[];
    foreach($input as $inputs => $value)
        
        $Sql = "update test_table set Input='$value' where = '$inputs'";
        mysqli_query($conn, $sql);
        
     ?>

请让我知道我的代码中有哪些错误?提前致谢。

【问题讨论】:

缺少结束标签,不知道id="$inputResult[0]['ID']",缺少名称属性,或者如果你想检查错误,请使用php Error_reporting() Sandeep,你的代码很混乱,试着解释一下你想要实现的目标,例如,在你的&lt;form 你有只有一个文本输入,然后你填写使用数组$inputResult第一个 项,但是在底部,您有一个foreach 来处理数组中的所有项,这很奇怪。 主要我只需要更新一个字段,即数据库中的输入列。请给我一些指导或指示,我可以更新一个字段。 【参考方案1】:

下一个解决方案非常适合您的问题。输入文本是表单中的 first 元素,因此,在 PHP 代码中,我们可以通过访问数组 $_POST 中的第一项来获取输入的 ID 和 VALUE(更改由箭头指示◄■■■):

<?php
$sql = "select * from test_table";

if($result = mysqli_query($conn, $sql)) 
    while($row = mysqli_fetch_array($result)) 
        $inputResult[]=$row;
    

?>

<form method="POST">
    <input type="text" value="<?php echo $inputResult[0]['Input'];?>"
                       name="<?php echo $inputResult[0]['ID'];?>" /> ◄■■■ NAME, NOT ID.
    <input type="submit" name="submit" />
</form>

<?php
if ( isset($_POST['submit']) ) 
    $value = reset( $_POST ); // ◄■■■ FIRST VALUE IN $_POST (['input']).
    $id = key( $_POST ); // ◄■■■ FIRST KEY IN $_POST (['ID']).
    $Sql = "update test_table set Input='$value' where id='$id'"; // ◄■■■ $VALUE AND $ID.
    mysqli_query($conn, $sql);

?>

我将输入文本中的id= 属性替换为name=,因为PHP 需要名称,而不是ID。

我们得到第一个值和第一个键后,就可以将它们插入到sql字符串中了。

编辑:

修复了缺失的标签(哎呀!)。我想我找到了错误,它是如此之少以至于很难看到:注意下一行:

     ▼
    $Sql = "update test_table set Input='$value' where id='$id'"; // ◄■■■ $VALUE AND $ID.

你看到左边的变量了吗:$Sql(第一个字母是大写的)。现在让我们看看下一行:

                         ▼
    mysqli_query($conn, $sql);

相同的变量不是大写的,一旦你修复它,一切都会正常:

     ▼
    $sql = "update test_table set Input='$value' where id='$id'"; // ◄■■■ $VALUE AND $ID.
    mysqli_query($conn, $sql);
                         ▲

【讨论】:

感谢您的回复。我尝试了上面的代码,但数据库中的数据没有更新。我想你也忘记了 name 属性中的 PHP 标签。 @SandeepKumar,修复了丢失的标签并编辑了答案以解释错误,检查一下!

以上是关于如何通过foreach循环更新的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP CodeIgniter foreach 循环中从数据库中提取和更新数据

如何在mybatis的mapper接口中为更新查询编写foreach循环

多个 foreach 循环语句

如何在敲除时在 foreach 循环中绑定输入值

为啥我不能使用 foreach 循环更新数组中的数据?

forEach 循环没有根据需要更新数组