我已经检查了许多关于我的问题的线索,但它仍然无法正常工作。
当我输入不存在的用户名时,它将抛出已创建的用户名。但是,当我输入已经在我的数据库中注册的用户名时,它仍然会注册。
这是我的注册表的php / html页面:
$error = false;
if(isset($_POST['signup'])) {
$name = mysqli_real_escape_string($con, $_POST['name']);
$email = mysqli_real_escape_string($con, $_POST['email']);
$password = mysqli_real_escape_string($con, $_POST['password']);
$cpassword = mysqli_real_escape_string($con, $_POST['cpassword']);
$sql = "SELECT name FROM users WHERE name='".mysql_real_escape_string($name)."'";
$query = mysqli_query($sql);
if(mysql_num_rows($query)){
$error = true;
$ckname_error = "Nom d'utilisateur déjà enregistré!";
} else { unset($ckname_error); }
if (!$error) {
if(mysqli_query($con, "INSERT INTO users(name,mail,password,rank) VALUES('" . $name . "', '" . $email . "', '" . md5($password) . "', 'user' )")) {
$successmsg = "Successfully Registered! <a href='login.php'>Click here to Login</a>";
header("Location: login.php");
} else {
$errormsg = "Error in registering...Please try again later!";
}
}
答案 0 :(得分:1)
您错过了$con
,并使用mysqli_num_rows
而不是mysql_num_rows
$query = mysqli_query($con,$sql);
if(mysqli_num_rows($query)){
答案 1 :(得分:1)
您的结果不可靠,因为您将mysqli_
与mysql_
功能混合在一起。
1。更改:
$sql = "SELECT name FROM users WHERE name='".mysql_real_escape_string($name)."'";
为:
$sql = "SELECT name FROM users WHERE name='$name'";
2. 更改
$query = mysqli_query($sql);
为:
$query = mysqli_query($con,$sql);
3. 更改
if(mysql_num_rows($query))
为:
if(mysqli_num_rows($query))
答案 2 :(得分:0)
您正在使用mysqli_query($ sql)。你应该使用&#39; mysqli_num_rows()&#39;而不是mysql_num_rows()。 PHP reference - mysqli_num_row
int mysql_num_rows(resource $ result)需要资源类型,而如果您使用mysqli_query,则应该使用int mysqli_num_rows(mysqli_result $ result) - 期望mysqli_results。
告诉我们是否有效。