我有一个SQL表格表来处理我网站的成员列表。但是,在注册新用户时,数据不会插入表中。由于我在整个代码中检查了几次错误,因此没有显示任何错误。
if (empty($error_msg)) {
// Create hashed password using the password_hash function.
// This function salts it with a random salt and can be verified with
// the password_verify function.
$password = password_hash($password, PASSWORD_BCRYPT);
// Insert the new user into the database
if ($insert_stmt = $mysqli->prepare("INSERT INTO members (username, email, password) VALUES (?, ?, ?)")) {
$insert_stmt->bind_param('sss', $username, $email, $password);
// Execute the prepared query.
if (!$insert_stmt->execute()) {
header('Location: ./error.php?err=Registration failure: INSERT');
}
header('Location: ./register_success.php?');
}
}
代码执行到最后,我被重定向到register_success。 我知道这不是因为我在我的代码中输入了错误的数据库凭据,我使用相同的凭据将数据发送到同一个数据库(它们保存在另一个文件中)并且它可以工作完全没问题。
编辑: 删除第二个"标题"正如Nick Coons所说,我被重定向到了错误页面,这意味着执行存在问题。不过,我还不知道为什么......
答案 0 :(得分:1)
您将需要使用the documentation on this page来确定SQL错误是什么(如果有)。
此外,如果出现错误,您将执行header()
函数两次,并且第二个实例将覆盖第一个(因为您只能发送一个“位置”标题),因此它将无论如何,都会重定向到您的成功页面。我建议您在header()
语句的else
条款中添加第二个if
来电,或在第一次拨打exit()
后添加header()
,这样只有一个或者另一个执行。