Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.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 如何在MySQL中存储零_Php_Html_Mysql_Post_Checkbox - Fatal编程技术网

Php 如何在MySQL中存储零

Php 如何在MySQL中存储零,php,html,mysql,post,checkbox,Php,Html,Mysql,Post,Checkbox,这似乎应该是一个简单的,但我已经搜索,似乎无法找到它。我正在使用PHP更新一个MySQL数据库,该数据库将一些字段设置为布尔开关。站点上的触发器是一个复选框。用户选中该框时,该值设置为1,未选中时,该值为零。问题是,当我发送表单时,当设置复选框时,数据库会很好地更新,但是它不会将字段的值更新为零,它只是忽略它。我已经在未设置为验证变量是否确实设置为零时回显了该值。当我试图清除文本框而不发送任何内容时,我发现类似的问题。MySQL只是忽略它,不会清除该字段。我错过什么了吗 下面是我正在使用的代码示

这似乎应该是一个简单的,但我已经搜索,似乎无法找到它。我正在使用PHP更新一个MySQL数据库,该数据库将一些字段设置为布尔开关。站点上的触发器是一个复选框。用户选中该框时,该值设置为1,未选中时,该值为零。问题是,当我发送表单时,当设置复选框时,数据库会很好地更新,但是它不会将字段的值更新为零,它只是忽略它。我已经在未设置为验证变量是否确实设置为零时回显了该值。当我试图清除文本框而不发送任何内容时,我发现类似的问题。MySQL只是忽略它,不会清除该字段。我错过什么了吗

下面是我正在使用的代码示例:

<?php
if ($_POST) {   
    if (isset($_POST['box1'])) {
        $box1 = $_POST['box1'];
    }
    else {
        $box1 = 0;
    }
    $query = "UPDATE table SET box1 = '{$box1}'";
    $result = mysqli_query($dbc, $query);
}
    ?>

<form method="post" action="">
    <input type="checkbox" name="box1"> Box 1
</form>

应该是


数据库中
box1
的数据类型应为
INT
,因此即使未将其设置为
0
,它仍将与
0
一起保存,因为您无法将任何内容存储在
INT
作为数据类型的字段中。

此时,如果数组中未传递任何值,则不会发生任何操作

考虑以下几点

...
$box1=0;

if ($_POST) {
    if (isset($_POST['box1'])) {
        $box1 = $_POST['box1'];
    }
}
    $query = "UPDATE boxtest SET box1 = $box1";
    $result = mysqli_query($dbc,$query);
    ?>

<form method="post" action=""/>
    <input type="checkbox" name="box1" value="1"/> Box 1
    <input type="submit"/>
</form>
。。。
$box1=0;
如果(美元邮政){
如果(isset($_POST['box1'])){
$box1=$_POST['box1'];
}
}
$query=“UPDATE-boxtest-SET-box1=$box1”;
$result=mysqli_查询($dbc,$query);
?>
方框1
或者(根据我之前的评论)



echo$query的结果是什么?您确定没有丢失
WHERE
吗?复选框上的
属性在哪里?不要在生产代码中使用类似的查询,它极易受到SQL注入攻击。攻击者可以将参数
box1
设置为他们喜欢的任何值,然后将其抛出到查询中。此外,我认为这些值在
上设置为
,并且``(空)这并不能回答问题。OP表示其复选框的值为1。他的逻辑为空框声明
0
。我提供了一个有效的答案。OP说:当用户选中该框时,该值设置为1,未选中时,该值为零。您是否错过了上面OP的注释<代码>抱歉,我忘记在原始复选框代码中包含value=“1”
太好了。如果列为
INT
则将值设置为nothing或null将默认为
0
。我想说的是,它不必设置为
0
。。除非它不是一个
INT
。我已经检查过了,我还通过将0设置为2并使用值2指示关闭状态对它进行了故障检查,这工作正常,所以我又回到了MYSQL处理0的方式?
<input type="hidden" name="box1" value="0" />
<input type="checkbox" name="box1" value="1"/>