创建一个函数来检查用户是否存在



所以我试着为我的注册网站做一个功能来检查用户名,电子邮件或ip是否存在。我想把它们分开检查。所以我可以把存在的东西输出给用户。但不知何故,这行不通。

现在它被检查为ok,但不传递其他名称。
function.php文件

function checkExists($con, $username, $email, $ip) {
//check for existing stuff
$userCheck = "SELECT * FROM users WHERE username = ? OR email = ? OR ip = ?";
$check = mysqli_stmt_init($con);

if(!mysqli_stmt_prepare($check, $userCheck)) {
$errors = "sql not working!";
}

mysqli_stmt_bind_param($check, "ssi", $username, $email, $ip);
mysqli_stmt_execute($check);

$resultData= mysqli_stmt_get_result($check);

if($row = mysqli_fetch_assoc($resultData)) {
$username = $row['username'];
return $username;
$email = $row['email'];
return $email;
$ip = $row['ip'];
return $ip;
}
mysqli_stmt_close($check);

}

register.php file
我喜欢这样检查它:

elseif(checkExists($con, $username, $email, $ip) === $username) {
$errors = "Username does already exists!";
}

您的函数没有返回任何内容,因此elseif将始终无法返回false

如Barmar所述,该函数不返回任何值

修改你的函数返回一个有意义的值,更新你的函数,可以试一下

function checkExists($con, $username, $email, $ip) {
//check for existing stuff
$userCheck = "SELECT * FROM users WHERE username = ? OR email = ? OR ip = ?";
$check = mysqli_stmt_init($con);

if(!mysqli_stmt_prepare($check, $userCheck)) {
$errors = "sql not working!";
}

mysqli_stmt_bind_param($check, "ssi", $username, $email, $ip);
mysqli_stmt_execute($check);

$resultData= mysqli_stmt_get_result($check);
$checkedUser = "";
$checkedEmail = "";
$checkedIp = "";

if($row = mysqli_fetch_assoc($resultData)) {
$checkedUser = $row['username'];
$checkedEmail = $row['email'];
$checkedIp = $row['ip'];
}
mysqli_stmt_close($check);
if($checkedUser == $username)
return $username;
else if($checkedEmail == $email)
return $email;
else if($checkedIp == $ip)
return $ip;
return "";

}

最新更新