gpt4 book ai didi

PHP foreach 循环覆盖最后一条记录的所有项目

转载 作者:行者123 更新时间:2023-11-29 21:37:26 29 4
gpt4 key购买 nike

我正在尝试更新 mysql 表,但不知道为什么,但所有记录都填充了最后一个条目。

这是我的 PHP 代码:

[...]

if (isset($_POST['update'])){

$doorNumber = $_POST['doorNumber']; //array
$doorDescription = $_POST['doorDescription']; //array

//update data
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


foreach($doorNumber as $key => $val){
$door = $pdo->prepare("UPDATE doors SET number = ?, description = ? WHERE acc_id = ?");
$door->execute(array($doorNumber[$key], $doorDescription[$key], $id));
}

Database::disconnect();
header('Location: index.php');

[...]

相关html如下:

[...]

<table class="table">
<thead>
<tr class="text-uppercase">
<th></th>
<th>Door #</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<?php
foreach ($rooms as $row){
echo '<tr class="text-left text-capitalize">';
echo '<td><input type="checkbox" name="chk[]" checked="checked"</td>';
echo '<td><input type="number" class="form-control" id="doorNumber[]" name="doorNumber[]" value=' .$row['number']. '></td>';
echo '<td><textarea rows="1" class="form-control" id="doorDescription[]" name="doorDescription[]">' .$row['description']. '</textarea></td>';
echo '</tr>';
}
?>
</tbody>
</table>
[...]

该表位于通过 $_GET['id'] 请求从 mysql 数据库获取记录的表单中(从而为变量 $id 设置一个值)。每当我更新记录时,在提交(即 $_POST['update'])时,表都会正确更新,但所有记录都将等于最后的输入。

非常感谢任何帮助。

提前致谢。

最佳答案

如果 html 表列出了属于某个 acc_id 的所有门和门描述,则每个更新语句都会更新属于某个帐户的所有门号和描述,因为在 where 条件中仅提供了 acc_id。

如果您想单独维护门号,那么您还必须将它们包含在 where 条件中及其原始值(假设给定帐户不能有重复的门号):

UPDATE doors SET number = ?, description = ? WHERE acc_id = ? and number=?

我会向 html 表单添加一个隐藏控件:

echo '<input type="hidden" name="originalnumber[]" value="' .$row['number']. '"';

我会添加一个新数组:

$originaldoorNumber = $_POST['originalnumber']; //array

sql 将按以下方式执行:

$door->execute(array($doorNumber[$key], $doorDescription[$key], $id, $originaldoorNumber[$key]))

关于PHP foreach 循环覆盖最后一条记录的所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34813023/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com