我正在尝试使我的注册表格适用于我的数据库,但是由于某种原因,当我进行测试注册时,数据库中什么也没有创建,有人知道这是什么问题吗?我认为这必须与所有人共同做某事
mysqli_stmt
我认为他们中的任何人都无法正常工作。
我还有第二个文件用于连接到数据库,并且似乎连接正确,所以不知道问题出在哪里。
我的php代码在这里
if (isset($_POST['signup-sub'])) {
//hämtar databash.php
require 'databash.php';
// variabler som tar värderna ifrån inputs på signup.php
$username = $_POST['nameid'];
$email = $_POST["mail"];
$password = $_POST['pwd'];
$passwordRepeat = $_POST['pwd-repeat'];
// ifstatement som kollar om någon rad inte är ifylld. om inte så skrivs det ut i länken att det finns tommatext rutor
if (empty($username) || empty($password) || empty($passwordRepeat)) {
header("Location: signup.php?error=tommatextrutor&nameid=".$username."&mail=".$email);
//stoppar skripten om någon skrit in felaktig inmatning
exit();
}
elseif (!filter_var($email, FILTER_VALIDATE_EMAIL) && !preg_match("/^[a-zA-Z0-9]*$/", $username)) {
header("Location: ../signup.php?error=invalidmailname");
//stoppar skripten om någon skrit in felaktig inmatning
exit();
}
// else if som kollar om emailaddresen som är inskriven är felaktig och i så fall lägger ut i länken att det är något fel med emailen.
elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
header("Location: ../signup.php?error=invalidmail&name=".$username);
//stoppar skripten om någon skrit in felaktig inmatning
exit();
}
elseif (!preg_match("/^[a-zA-Z0-9]*$/", $username)) {
header("Location: ../signup.php?error=invalidnameid&mail=".$email);
exit();
}
elseif ($password !== $passwordRepeat) {
header("location: ../signup.php?error=passwordwrong&nameid=".$username."&mail=".$email);
//stoppar skripten om någon skrit in felaktig inmatning
exit();
}
// kollar om det redan finns en användare med detta användarnamnet
else {
$sql = "SELECT uidUsers FROM USERS WHERE uidUsers=?";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
header("Location: ../signup.php?error=sqlerror");
exit();
} else {
mysqli_stmt_bind_param($stmt, "s", $username);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
$resultCheck = mysqli_stmt_num_rows($stmt);
if ($resultCheck > 0) {
header("Location: ../signup.php?errornamntaget&mail=".$email);
exit();
} else {
$sql = "INSERT INTO USERS (uidUsers, emailUsers, pwdUsers) VALUES (?, ?, ?)";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
header("Location: ../signup.php?error=sqlerror");
exit();
} else {
$hashedPwd = password_hash($password, PASSWORD_DEFUALT);
mysqli_stmt_bind_param($stmt, "sss", $username, $email, $hashedPwd);
mysqli_stmt_execute($stmt);
header("Location: signup.php?registrering=klar");
exit();
}
}
}
}
mysqli_stmt_close($stmt);
mysqli_close($conn);
}
else {
header("Location: signup.php");
exit();
}
答案 0 :(得分:-1)
这不是答案,而是帮助您测试代码的方法。注释掉您的每个header("location: ..")
,并在其位置添加echo "error 1";
(以及2、3等)。然后运行您的代码。当代码返回错误时,您将能够确定造成问题的原因。解决第一个错误,再次运行代码(对其进行测试),修复下一个错误。冲洗并重复。