为了账号安全,请及时绑定邮箱和手机立即绑定

PHP MySQL 使用复选框更新多行

PHP MySQL 使用复选框更新多行

PHP
胡子哥哥 2021-11-05 10:38:15
我想用 PHP 更新 MySQL 中的检查值<?phprequire "../../../../config.php";if (isset($_POST['btn-upload'])) {    try {        $connection = new PDO($dsn, $username, $password, $options);        $status = $_POST['status'];        $ck_id = $_POST['ck_id'];        for ($i = 0; $i < sizeof($ck_id); $i++) {            $sql = "UPDATE form_eg208 SET status=:status where ck_id IN (:ck_id)";            $statement = $connection->prepare($sql);            $statement->bindParam(':status', $status[$i]);            $statement->bindParam(':ck_id', $ck_id[$i]);            $statement->execute();        }    } catch (PDOException $error) {        echo $sql . "<br>" . $error->getMessage();    }    if ($statement->rowcount() >= 0) {        echo '<div class="alert alert-success alert-dismissible" id="flash-                 msg">    <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;                     </a>                  <h4> <strong>Success!</strong> Insert Record                   Successfully</h4>                  </div>';    } else {        echo '<div class="alert alert-danger alert-dismissible" id="flash-                    msg">    <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;                          </a>                 <h4> <strong>Failed!</strong> Duplicate BGLPARTNO</h4>                    </div>';    }}?>我的 html 代码是<?php$id = $_REQUEST['cid'];try {    $connection = new PDO($dsn, $username, $password, $options);    $j = 1;    $sql = "CALL view_eg208 (:bglpartno)";    $statement = $connection->prepare($sql);    $statement->bindParam(':bglpartno', $id);    $statement->execute();    $result = $statement->fetchAll();} catch (PDOException $error) {    echo $sql . "<br>" . $error->getMessage();}当我更新所有值时,它可以正常工作,但是当单个值时,它将第一个框的值更新到我选择的那个框中。请帮我解决这个问题
查看完整描述

1 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

请像这样输入您的复选框,以便您获得status正确的ck_id索引:


if ($result && $statement->rowCount() > 0) { 


    foreach ($result as $i => $row) { ?>


        <tr>


            <td>

                <input type="checkbox" id="ck_id[]"class="filled-in chk-col-blue" 

                name="ck_id[<?php echo $i ?>]" value="<?php echo escape ($row["ck_id"]);?>"/> 

            </td>   

            <td style="color:black"><?php echo escape 

                ($row["activity_name"]);?></td>

            <td>

                <div class="form-group has-danger" 

                style="margin-bottom: 0;">                   

                    <input type="text" id="status[]" name="status[<?php echo $i ?>]" 

                        maxlength="100" class="form-control" value="<? 

                        php echo escape ($row["status"]);?>" autocomplete="off" 

                        required="required" >                  

                    <div class="invalid-feedback">

                        Please provide a Inputs.

                    </div>

                </div>

            </td>    


        </tr>   


    <?php

    }

}

也尝试使用foreach而不是for循环:


    try {


        $connection = new PDO($dsn, $username, $password, $options);


        $status = $_POST['status'];

        $ck_id = $_POST['ck_id'];


        // for ($i = 0; $i < sizeof($ck_id); $i++) {

        foreach ($ck_id as $i => $value) {

            $sql = "UPDATE form_eg208 SET status=:status where ck_id IN (:ck_id)";

            $statement = $connection->prepare($sql);

            $statement->bindParam(':status', $status[$i]);

            $statement->bindParam(':ck_id', $ck_id[$i]);


            $statement->execute();

        }


    } catch (PDOException $error) {

        echo $sql . "<br>" . $error->getMessage();

    }


查看完整回答
反对 回复 2021-11-05
  • 1 回答
  • 0 关注
  • 118 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信