PHP/MySQL-返回0和1的复选框值

PHP/MySQL-返回0和1的复选框值,php,mysql,Php,Mysql,我看了一眼,但有点困惑 在数据库中,托管、完成设置和符合法律的列是1或0,如果用户选中复选框,则会将其更新为1: <div class="form-group <?php echo (!empty($complete_setup_err)) ? 'has-error' : ''; ?>"> <label>Complete Setup</label> <input type="checkbox" class="form-cont

我看了一眼,但有点困惑

在数据库中,
托管
完成设置
符合法律
的列是
1
0
,如果用户选中复选框,则会将其更新为1:

<div class="form-group <?php echo (!empty($complete_setup_err)) ? 'has-error' : ''; ?>">
    <label>Complete Setup</label>
    <input type="checkbox" class="form-control" name="complete_setup" value="1" />
    <span class="help-block"><?php echo $complete_setup_err; ?></span>
</div>

问题在于未选中复选框根本不会发送到服务器。这意味着如果选中,则变量是已发布值的一部分,如果未选中,则不会发送。您可以在客户端修改该行为,但在接收服务器端简单地评估给定信息要容易得多:

您可以评估已发布变量中是否存在该变量:

$isChecked = (isset($_POST['complete_setup']) && $_POST['complete_setup'] == 1) ? 1 : 0;

要控制在分发表单时是否已选中复选框,需要主动将复选框标记为已选中:

<?php $isChecked = ($row['complete_setup'] == 1) ? 'checked' : ''; ?>
<input type="checkbox" class="form-control" name="complete_setup" value="1" checked="<?php echo $isChecked ?>"/>


Hi@arkascha-它们是通过以下
trim($\u POST['complete\u setup'])更新的,
那么我如何将
$isChecked
行包括在其中呢?谢谢对这样的值调用
trim()
函数没有意义。只需将
trim($\u POST['complete\u setup'])
替换为
$isChecked
就可以了。或者直接使用分配给
$isChecked
的术语。但是如果你不发布你的实际代码,我就不能肯定了。只需注意:
$isChecked=!空($\u POST['complete\u setup'])
是在大多数情况下测试复选框的一种较短的方法。@je当然,可能的话,这假设变量的所有值都表示复选框。然而,从OP的描述来看,这并不清楚。因此,这取决于实际情况。