使用 mysql 数据库和 php 上的选项字段数组进行批量更新

问题描述 投票:0回答:1

我遇到的问题是,确切的行更改不是更新预期的行,而是更新该行之前的一行。因此,如果我分别对第 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 
    } 
?>
php html arrays mysqli
1个回答
0
投票

首先,您需要使用 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);
    }
}

}

© www.soinside.com 2019 - 2024. All rights reserved.