难以检查现有用户注册php/mysqli


Difficulty checking for existing user registration php/mysqli

我在拒绝注册现有用户时遇到问题。请参阅下面的代码,以及下面的详细信息。

<?php
//connect to sql
 $con=mysqli_connect("host","user","pass","db");
  if (mysqli_connect_errno())
   {
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
   }
//pull user id from form input
$uid=$_POST[uid];
//make sure input is not blank
if($uid==""){echo 'Please enter a username.';exit();}
//make sure it is alphanumeric input only
if(!ctype_alnum($uid)){echo 'The username chosen must be alpha-numberic (A-z,0-9),   
without special characters. Please use the back button in your
browser to try again using only alpha-numeric input.';exit();}

//check if user exists
$query=mysqli_query($con, "SELECT * FROM user WHERE uid='$uid'");
if(!$query){die 'query failed to execute';}
if(mysqli_num_rows($query)!=0){echo 'user already exists. Use back button and enter a new username'; exit();
}
//insert record into DB
$sql= "INSERT INTO user (uid, addr, password, passwordlastchanged, email)
 VALUES
 ('$uid', '$_POST[addr]', '$_POST[pwd]','today', '$_POST[email]')";
 if (!mysqli_query($con,$sql))
   {
   die('Error: ' . mysqli_error($con));
   }
 echo "1 record added";
 mysqli_close($con);
 ?> 

因此,当我通过表单输入时,它工作得很好,只是如果我试图注册一个已经存在的用户名,它会允许它,当我设置了查询以查找现有条目并在它找到它时取消(或者我认为…)

你能看出我做错了什么吗?我再次希望它检查用户名,如果发现它,就拒绝进一步的操作。

我知道这可能缺乏安全性,但不幸的是,我在学习的过程中不断学习,所以首先要做好工作:)尽管安全建议会被记录下来,并在适当的时候进行考虑。

我花了大量的时间研究这个问题,我觉得我已经尝试了很多不同的查询/函数组合。

尝试

if(mysqli_num_rows($query)>0) 

而不是

 if(mysqli_num_rows($query)!=0)