所以我试着为我的注册网站做一个功能来检查用户名,电子邮件或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 "";
}