-1

我想插入一个复选框是否选择到 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;
}

由于某种原因,它只返回 1,而不返回 0!我是PHP新手,所以我想知道我到底哪里出错了,谢谢!

4

1 回答 1

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。

于 2012-08-04T18:54:23.197 回答