我想插入一个复选框是否正在选择MySQL,只需将1或0添加到与该值对应的列即可。我遇到了0的问题,详见下文。
以下是复选框
的示例<input type='checkbox' name='class[]' value='mathhl' id="mathhl">
为简单起见,我添加了这个
$classes = $_POST["class"];
这是检查复选框值的foreach循环。
foreach($classes as $value) {
if (!isset($value)) {
$value = 0;
}
else {
$value = 1;
}
echo $value;
}
由于某种原因,它只返回1s,但不返回0!我是PHP的新手,所以我想知道我到底哪里出错了,谢谢!
答案 0 :(得分:5)
仅将已选中的复选框发送到服务器。因此,如果数组中不存在该值,那是因为未检查该框。
您可以通过将值设置为数组中的键来简化逻辑:
<input type='checkbox' name='class[mathhl]' value='1' id="mathhl">
现在,您不必遍历$_POST['class']
。相反,你可以获取所有键的数组(你应该已经知道):
$keys = array( 'mathh1', 'mathh2', 'mathh3');
并形成一个具有默认值(例如0)的数组:
$defaults = array_combine( $keys, array_fill( 0, count( $keys), 0));
将$_POST
数组与默认数组合并:
$results = array_merge( $defaults, $_POST['class']);
现在,$results
将包含一个关联数组,其中键是列,值是1或0,具体取决于是否选中了复选框。要小心,因为有人可以发布他们想要$_POST
的数据,所以它可能不只是1和0。