我遇到的问题是,确切的行更改不是更新预期的行,而是更新该行之前的一行。因此,如果我分别对第 45 行和第 46 行进行更改。我将看到第 44 行和第 45 行的更新
这是点击提交按钮后的帖子
if (isset($_POST['Submit'])){
for($i=0;$i<count($_POST['id']);$i++){
$id=$_POST['id'][$i];
$status=$_POST['status'][$i];
$update = mysqli_query ($link,"UPDATE mgt_checklist_breakdown SET status = '$status' WHERE id = '$id'");
}
}
这是html表,其中包含用于更新mysql的下拉选择数组
<?php
$a = mysqli_query($link,"select * from mgt_checklist_breakdown where checklist_id='$_GET[id]'");
while ($fa=mysqli_fetch_assoc($a)){
$i++;
?>
<tr>
<td><?php echo $fa['sn'];?></td>
<td><?php echo $fa['checklist'];?></td>
<td>
<select name="status[]" class="form-select">
<option value="OPEN">OPEN</option>
<option value="CLOSED">CLOSED</option>
</select>
<input type="hidden" name="id[]" value="<?php echo $fa['id'];?>">
</td>
</tr>
<?php
}
?>
首先,您需要使用 Post 方法将表格包装在表单标签中
然后在关闭表格标签后,您可以在表单标签内创建一个提交按钮。
运行 php 更新脚本之后:-
if (isset($_POST['提交'])) {
$ids = $_POST['id'];
$stat = $_POST['status'];
// Iteration
for ($i = 0; $i < count($ids); $i++) {
$id = mysqli_real_escape_string($link, $ids[$i]);
$status = mysqli_real_escape_string($link, $stat[$i]);
// update query
$upd = mysqli_query($link, "UPDATE mgt_checklist_breakdown SET status = '$status' WHERE id = '$id'");
// Check errors
if (!$upd) {
echo "Error updating record with ID $id: " . mysqli_error($link);
}
}
}