复选框布尔值似乎未提交到数据库

时间:2019-12-04 08:27:09

标签: php mysql database forms boolean

我有一个带有复选框的注册表单,该复选框指示用户是否应具有admin_rights,但是问题是这不会影响数据库。 如果我检查标头,但是它确实会与&admin_rights=on并存,则我以多种方式声明了该值,例如$rights = mysqli_real_escape_string($link, $_REQUEST['admin_rights']);$param_admin = trim($_POST["admin_rights"]);,但这些方法似乎都不起作用。

将其输入数据库的代码是

   $sql = "INSERT INTO users (username, password, admin_rights) VALUES (?, ?, '$param_admin')";

        if($stmt = mysqli_prepare($link, $sql)){
            // Bind variables to the prepared statement as parameters
            mysqli_stmt_bind_param($stmt, "ss", $param_username, $param_password);

            // Set parameters
            $param_username = $username;
            $param_password = password_hash($password, PASSWORD_DEFAULT); // Creates a password hash

            // Attempt to execute the prepared statement
            if(mysqli_stmt_execute($stmt)){
                // Redirect to login page
                header("location: login.php");
            } else{
                echo "Something went wrong. Please try again later.";
            }
 <div class="form-group">
                 <input type="checkbox" name="admin_rights" class="form-control checkbox" id="admin_rights"> 
                 <label>Admin rights?</label>


            </div>

其他数据(例如密码和用户名)的确会丢失,因此我可以确定问题出在布尔复选框中。

我不确定如何解决此问题,以便在选中admin_rights时将其另存为布尔值。

1 个答案:

答案 0 :(得分:0)

设置值=“ 1” 因此,如果用户选中此框,则value = 1将保存到数据库中,并且在admin_rights字段中将数据库的默认值设置为0。 使用1个值字段,您可以做任何您想做的事。