php - 复选框的值无法正常工作

oli*_*rbj 0 php mysql checkbox

我有这个复选框:

<label>Maintenance Mode: <small>Tick to enable/disable.</small></label>
<input type="checkbox" name="maintenance" value="1" <?php echo $maintenance; ?> >
Run Code Online (Sandbox Code Playgroud)

我从我的数据库中获取数据.因此,如果在我的数据库中启用了维护,则将选中该复选框.这是这样的:

if($sdata['maintenance']==1):
    $maintenance="checked='checked'";
else: 
    $maintenance="";
endif;
Run Code Online (Sandbox Code Playgroud)

问题是,每当我想要禁用维护时,它都不会更新数据库.它仍将设置为"1".

这是我发布的方式:

$maintenance = inputFilter($_POST['maintenance']);
Run Code Online (Sandbox Code Playgroud)

我的数据库表有两列:

setting_namesetting_value.在这种情况下,它将是:

maintenance1

我这样更新:

foreach($_POST as $key => $value)
{
  $value = inputFilter($value);
  mysql_query("UPDATE settings SET setting_value='$value' where setting_name='$key' limit 1")
  or die(mysql_error());
}
Run Code Online (Sandbox Code Playgroud)

每当我取消选中该复选框并保存设置时,都不会发生任何事情.我甚至试图$maintenance从帖子中获取echp ,当它未经检查时,值为0.

任何人都知道是什么原因造成的?

小智 5

未检查的复选框不会在POST请求中发送,因此其密钥不在$ _POST中

您应该检查复选框名称是否存在.

if(!isset($_POST['maintenance'])) {
     // Checkbox is unchecked
}
Run Code Online (Sandbox Code Playgroud)