我使用PHP将数据从一个在线表单发布到一个数据库中,表单上的一些字段是复选框。我最初将复选框的数据类型定义为BIT,但在选中复选框并提交表单后,当我在数据库中查找时,这些值都是'b‘。然后,我将数据类型设置为BOOLEAN,它将自身切换为TINYINT。但是,在选中复选框/提交表单后,数据库中的值都是'0‘。我希望看到一个与选中的复选框相对应的“1”,但这并没有发生。我做错了什么?谢谢!
发布于 2011-12-14 22:01:44
您很有可能将checkbox的checked值传递到数据中。复选框不使用true/false,而是使用"checked"或empty。你可以这样做:
$value = ($checked == "checked" ? 1 : 0)发布于 2011-12-14 22:08:23
在这里的某个时刻,您正在将字符串转换为整数。当你在PHP中这样做的时候,结果很可能是0 (see this)。我对MySQL不太确定,但我怀疑它以大致类似的方式处理操作。
我想说的是,处理这个问题的方法是这样定义您的复选框:
<input name="mycheckbox" type="checkbox" value="1" />然后,在PHP中,获取插入数据库的值,如下所示:
$myCheckBoxIsChecked = (!empty($_POST['mycheckbox'])) ? 1 : 0;然后,您可以在查询中直接使用$myCheckBoxIsChecked,不需要任何消毒-因为您知道它的值只能是1或0。
https://stackoverflow.com/questions/8505687
复制相似问题