我正在使用PHP将在线表单中的数据发布到数据库中,表单上的某些字段是复选框。我最初将复选框的数据类型定义为BIT,但在选中复选框并提交表单后,当我查看数据库时,值都是'b'。然后我将数据类型设置为BOOLEAN,并将其自身切换为TINYINT。但是,在选中复选框/提交表单后,数据库中的值都为“0”。我希望看到一个'1',它对应于已经选中的复选框,但是没有发生。我究竟做错了什么?谢谢!
答案 0 :(得分:2)
您很有可能将复选框的checked
值传递到数据中。复选框不使用true / false,而是"checked"
或空。你可以这样做:
$value = ($checked == "checked" ? 1 : 0)
答案 1 :(得分:1)
在某种程度上,您将字符串转换为整数。当你在PHP中执行此操作时,结果可能是0(see this)。我不确定MySQL,但我怀疑它以一种大致相似的方式处理操作。
我想说,解决这个问题的方法是让你的复选框定义如下:
<input name="mycheckbox" type="checkbox" value="1" />
然后,在PHP中,获取您插入数据库的值,如下所示:
$myCheckBoxIsChecked = (!empty($_POST['mycheckbox'])) ? 1 : 0;
然后,您可以在查询中直接使用$myCheckBoxIsChecked
,而不会进行排毒 - 因为您知道它的值只能为1
或0
。