我有一个带有复选框的注册表单,该复选框指示用户是否应具有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时将其另存为布尔值。
答案 0 :(得分:0)
设置值=“ 1” 因此,如果用户选中此框,则value = 1将保存到数据库中,并且在admin_rights字段中将数据库的默认值设置为0。 使用1个值字段,您可以做任何您想做的事。