一尘不染

未选中的复选框返回空值

mysql

我有一组复选框,这些复选框在选中时将值传递为1,否则将值传递为0。但是,不是将未选中的复选框的值发送为“ 0”,而是发送的值为“ NULL”。

我在下面的JS代码中应将值相应地设置为0/1,但是仍然将该值作为NULL发送。有什么方法可以确保在未选中复选框的情况下传递的值为0?

$('#cb1, #cb2, #cb3, #cb4').on('click', function ()
    $(this).val(this.checked ? 1 : 0);
});

更新 这是我的html:

<input type="checkbox" name="cb1" id="cb1" value="1" checked />
<input type="checkbox" name="cb2" id="cb2" value="1" checked />
<input type="checkbox" name="cb3" id="cb3" value="1" checked />
<input type="checkbox" name="cb4" id="cb4" value="1" checked />

默认情况下,它们都被选中。

如果未选中其中之一,则MySQL报告以下错误:0SQLSTATE [23000]:违反完整性约束:1048列’ColumnName’不能为null。

这是因为将列设置为不设置为Null。即使我将默认值设置为0,但一旦单击“提交”按钮,我仍然会收到错误消息。我尝试删除Not
NULL属性,但是与其在数据库中输入的值为NULL而不是将值预填充为0。


阅读 403

收藏
2020-05-17

共1个答案

一尘不染

如果未选中该复选框,则不会发送该复选框,因此如果未选中该复选框,则将其值设置为0将无济于事-它将始终返回NULL。

有两种方法可以轻松解决此问题:

1)假设PHP参数中的NULL表示未选中该复选框。如果该复选框并不总是存在于页面上,则可能有问题。听起来,复选框的数量是可变的,所以这可能行不通。

2)添加一个与复选框名称相同的隐藏输入,复选框 值为0 。如果未选中该复选框,则将使用隐藏字段值;如果选中,则将使用该复选框值。

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

注意:如果您的姓名采用数组形式(即,其中带有方括号),则此方法将不起作用,因为隐藏字段也将增加数组计数。

2020-05-17