Php 更改复选框值并插入数据库

Php 更改复选框值并插入数据库,php,jquery,mysql,Php,Jquery,Mysql,听起来很简单,但我就是做不到。我正在尝试向数据库中插入复选框值。如果选中,则插入Y,如果不选中,则插入N。在我的DOM中,我看到复选框的值在我单击它后更改为N,但数据库中的值没有更改。也许是我错过了一些小而愚蠢的东西 所以默认值是N 以下是HTML: <div class="funkyradio"> <div class="funkyradio-success"> <input type="checkbox" name="animalCare"

听起来很简单,但我就是做不到。我正在尝试向数据库中插入复选框值。如果选中,则插入Y,如果不选中,则插入N。在我的DOM中,我看到复选框的值在我单击它后更改为N,但数据库中的值没有更改。也许是我错过了一些小而愚蠢的东西

所以默认值是N

以下是HTML:

<div class="funkyradio">
    <div class="funkyradio-success">
       <input type="checkbox" name="animalCare" id="animalCare" value="N"/>
     <label for="animalCare">Hoolitsen loomade eest:</label>
     </div>
</div>
对于插入,我使用formValidation.io插件,如果复选框被更改,我甚至看不到网络选项卡下formdata中的N,否则我会看到Y

.on('success.form.fv', function(e, data) {
            // Prevent form submission
            e.preventDefault();
            console.log("validated");

            var $form = $(e.target),
                formData = new FormData(),
                params = $form.serializeArray(),
                files = $form.find('[name="userProfilePhoto"]')[0].files;
            $.ajax({
                url: $form.attr('action'),
                data: formData,
                cache: false,
                contentType: false,
                processData: false,
                type: 'POST',
                success: function(data) {},
                error: function(jqXHR, textStatus, errorThrown, data) {
                    console.log(jqXHR, textStatus, errorThrown, data);
                }
            });
});
PHP


不要试图更改客户端上的值。复选框不是设计成这样工作的。如果未选中该复选框,它将不会出现在提交的数据中

测试是否改为发送数据

$value = "N";
if (isset($_POST['animalCare'])) {
    $value="Y";
}

显然,根本不要将从客户端发送的值作为要运行的查询的要求。

不要尝试更改客户端上的值。复选框不是设计成这样工作的。如果未选中该复选框,它将不会出现在提交的数据中

测试是否改为发送数据

$value = "N";
if (isset($_POST['animalCare'])) {
    $value="Y";
}

显然,根本不要将从客户端发送的值作为要运行的查询的要求。

这是因为函数serializeArray不会接受未选中的复选框

这是HTML表单的默认行为

发件人:

.serializeArray方法使用成功控件的标准W3C规则来确定它应该包含哪些元素;尤其是不能禁用元素,元素必须包含名称属性。由于未使用按钮提交表单,因此未序列化任何提交按钮值。文件选择元素中的数据未序列化

函数测试表{ log$myForm.serializeArray; }
这是因为函数serializeArray不会选中未选中的复选框

这是HTML表单的默认行为

发件人:

.serializeArray方法使用成功控件的标准W3C规则来确定它应该包含哪些元素;尤其是不能禁用元素,元素必须包含名称属性。由于未使用按钮提交表单,因此未序列化任何提交按钮值。文件选择元素中的数据未序列化

函数测试表{ log$myForm.serializeArray; }
检查查询执行中的错误。koristab=VALUESkoristab,loomade_hoolitsus=VALUESloomade_hoolitsus应该扔点东西。还有,为什么要更新为相同的值?您在var_dump$\u POST中有什么?未选中复选框时,复选框不会发送到服务器,这可能也是为什么它们也不包含在FormData中的原因。请检查查询执行中的错误。koristab=VALUESkoristab,loomade_hoolitsus=VALUESloomade_hoolitsus应该扔点东西。还有,为什么要更新为相同的值?您在var_dump$\u POST中有什么?未选中复选框时,复选框不会发送到服务器,这可能就是为什么它们也不包含在FormData中的原因。@raqulka-因为您说过可以在提交的数据中看到Y,这表明有其他东西坏了。你说的是什么意思:根本不把从客户端发送的值作为要运行的查询的要求?还有一件奇怪的事,现在我在formData中看到了N,但它仍然插入Y@raqulka-在问题中PHP的第2行,如果表单数据中不包含animalCare,则if语句不会运行查询。不要这样做。@raqulka-表单数据中的值无关紧要。任何值的存在都表明复选框已被选中,因此是结果。答案中的代码从不查看$_POST['animalCare']的值,只有在设置了它的情况下才会查看。@raqulka-因为你说你可以在提交的数据中看到Y,这表明有其他东西坏了。你的意思是什么:不要让从客户端发送的值成为运行查询的要求?还有一件奇怪的事,现在我在formData中看到了N,但它仍然插入Y@raqulka-在问题中PHP的第2行,有一个if语句,如果表单数据中没有包含animalCare,则该语句不会运行查询。不要这样做。@raqulka-表单数据中的值无关紧要。任何值的存在都表明复选框已被选中,因此是结果。答案中的代码从不查看$u POST['animalCare']的值,只有在设置了该值的情况下。
$value = "N";
if (isset($_POST['animalCare'])) {
    $value="Y";
}