你如何在MySQL中存储零

时间:2013-01-10 18:22:23

标签: php html mysql post checkbox

这似乎应该是一个简单的,但我已经搜索过,似乎无法弄明白。我正在使用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>

2 个答案:

答案 0 :(得分:0)

<input type="checkbox" name="box1">

应该是

<input type="checkbox" name="box1" value="1">

数据库中box1的数据类型应为INT,因此即使未设置为0,它仍会保存为0,因为您可以在INT作为数据类型的字段中不存储任何内容。

答案 1 :(得分:0)

目前,如果数组内没有传递任何值,则不会发生任何操作。

考虑以下内容......

...
$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>

或(根据我之前的评论)

<input type="hidden" name="box1" value="0" />
<input type="checkbox" name="box1" value="1"/>