更新 SQL 表中的复选框值

我可以显示来自SQL查询的复选框值,但我无法更新它们,我只能更新取消勾选值(0值),如果我取消选中复选框,它可以将取消勾选值0保存到SQL表中。如果我重新选中该复选框,则无法更新 SQL 查询中的值。我使用 int 作为数据类型。下面是来自我的测试系统的示例代码:


复选框:


<div class="form-group col-lg-6">

<label class="control-label col-lg-4">Pricing<span style="color:red;">&nbsp;</span></label>

<div class="col-lg-8">

    <input type="checkbox" name="rm_option" id="rm_option" value="1"><strong> RM </strong></input>&nbsp;&nbsp;&nbsp;

    <input type="checkbox" name="point_option" id="point_option" value="1"><strong> Full Point </strong></input>&nbsp;&nbsp;&nbsp;

    <input type="checkbox" name="partial_option" id="partial_option" value="1"><strong> Partial Point + RM </strong></input>

</div>

</div>

复选框回声编辑功能:


<?php

$sql = "select * from promotion_list where id=" . $_GET['id'];

$arr_sql = db_conn_select($sql);

foreach ($arr_sql as $rs_sql) {

    foreach ($rs_sql as $key => $value) {

        ?>

                                $("#<?php echo $key ?>").val("<?php echo $value ?>");

                                    <?php if($value == 1){ ?>

$("#<?php echo $key ?>").attr("checked", true).prop("checked", true);

<?php } ?>

        <?php

    }

    ?>

                            $("#filter_id").val('<?php echo $rs_sql['id'] ?>');

                            $("#promotion_content").jqteVal('<?php echo $rs_sql['promotion_content'] ?>');

                            $("#promotion_terms").jqteVal('<?php echo $rs_sql['promotion_terms'] ?>');

                            $("#promotion_instruction").jqteVal('<?php echo $rs_sql['promotion_instruction'] ?>');

                            $("#promotion_policy").jqteVal('<?php echo $rs_sql['promotion_policy'] ?>');

    <?php

}

?>


潇湘沐
浏览 99回答 1
1回答

慕斯709654

对于复选框,如果选中该复选框,则数组元素存在(并且 = 1),否则它不存在。所以改变$_POST$rm_option = isset($_POST['rm_option']) ? $_POST['rm_option'] : "";&nbsp;$point_option = isset($_POST['point_option']) ? $_POST['point_option'] : "";$partial_option = isset($_POST['partial_option']) ? $_POST['partial_option'] : "";自$rm_option = isset($_POST['rm_option']) ? 1 : 0;&nbsp;$point_option = isset($_POST['point_option']) ? 1 : 0;$partial_option = isset($_POST['partial_option']) ? 1 : 0;并且您也应该能够更新0值。请注意,如@SergheiLeonenco所说,由于这些是数值,因此在查询中不需要用引号将它们括起来。强制 SQL 注入注释。由于您直接在查询中使用值,因此容易受到 SQL 注入的攻击。您应该阅读如何在PHP中防止SQL注入,并转到准备好的语句以保护自己。$_POST
打开App,查看更多内容
随时随地看视频慕课网APP