Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更新SQL表中的复选框值_Php_Sql_Sql Update - Fatal编程技术网

Php 更新SQL表中的复选框值

Php 更新SQL表中的复选框值,php,sql,sql-update,Php,Sql,Sql Update,我可以显示SQL查询中的复选框值,但我不能更新它们,我只能更新untick值(0值),如果我取消复选框,它可以将untick值0保存到SQL表中。如果我重新勾选复选框,它将无法更新SQL查询中的值。我使用int作为数据类型。以下是我的测试系统中的示例代码: 复选框HTML: <div class="form-group col-lg-6"> <label class="control-label col-lg-4">Pricing<span style="color

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

复选框HTML:

<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
}
?>
else if($action == 'update') {

$rm_option = isset($_POST['rm_option']) ? $_POST['rm_option'] : "";
$point_option = isset($_POST['point_option']) ? $_POST['point_option'] : "";
$partial_option = isset($_POST['partial_option']) ? $_POST['partial_option'] : "";

$query = "UPDATE " . $table ." SET id_promotion_categories = '" . $id_promotion_categories . "', 
promotion_title = '".$promotion_title."',
 rm = '".$rm."', promotion_description = '".$promotion_description."', 
point = '".$point."', point_rm_point = '".$point_rm_point."', point_rm_rm = '".$point_rm_rm."', 
quantity_limit_option = '".$quantity_limit_option."', quantity_limit = '".$quantity_limit."', 
discount_percentage = '".$discount_percentage."', promotion_price_before = '".$promotion_price_before."',
 promotion_price_after = '".$promotion_price_after."', 
redemption_from_date = '".$redemption_from_date."', redemption_to_date = '".$redemption_to_date."', 
rm_option = '".$rm_option."', point_option = '".$point_option."', partial_option = '".$partial_option."', 
merchant_option = '".$merchant_option."', merchant_price = '".$merchant_price."', 
reservation = '".$reservation."', feature = '".$feature."' where id='" . $id . "'";

$arr_treatment = db_conn_update($query);

        if ($arr_treatment) {

                $result_arr['msg'] = 'Update Successful';
            } else {
                $result_arr['msg'] = 'Error in processing data. Please try again later.';
            }
            $result_arr = special_char_display_arr($result_arr);
            $json = json_encode($result_arr);
            print($json);


} 
下面是我的输出(它不能让我在空复选框中更新,例如,下面的部分点+RM):


所有更新记录都没有问题,只是复选框不能更新。我希望有人能指导我解决这个问题。非常感谢。

对于复选框,如果选中复选框,则会出现
$\u POST
数组元素(and=1),否则将不存在该元素。所以改变

$rm_option = isset($_POST['rm_option']) ? $_POST['rm_option'] : ""; 
$point_option = isset($_POST['point_option']) ? $_POST['point_option'] : "";
$partial_option = isset($_POST['partial_option']) ? $_POST['partial_option'] : "";

您还应该能够更新0值。请注意,正如@SergheiLeonenco所说的,因为这些是数值,所以在查询中不需要在它们周围加引号

强制SQL注入注释


因为您直接在查询中使用
$\u POST
值,所以很容易受到SQL注入的攻击。您应该阅读并移动到准备好的语句以保护自己。

对于复选框,如果选中复选框,则存在
$\u POST
数组元素(and=1),否则不存在该元素。因此,更改($\u POST['rm\u option'])$_POST['rm_option']:“”到
$rm\u option=isset($\u POST['rm\u option'])?1 : 0;
和您应该能够更新0值。还可以删除
“$rm_option.”“
和其他必须插入整数的地方的单引号。结果应该是这样的:
“$rm\u选项。”
@Nick您的答案是正确的。你能把你的答案写在下面让我给你打分吗?@asonchesondone。。。
$rm_option = isset($_POST['rm_option']) ? 1 : 0; 
$point_option = isset($_POST['point_option']) ? 1 : 0;
$partial_option = isset($_POST['partial_option']) ? 1 : 0;