检查用户名是否已存在将无法显示正确的答案

时间:2013-10-28 19:25:49

标签: php mysql

我正在尝试使用PHP和MySQL创建重复检查,现在尝试了许多不同的变种。然而,我的代码不显示用户名是否已存在。据我所知,这应该是功能重复检查的正确(很多)公式?

  $username = "heihei";
  $checkquery = mysqli_query($con,"SELECT * FROM users 
  WHERE username='$username'") or die(mysqli_error());  
  if (mysqli_num_rows($checkquery)) {
     echo ">0" ; 
  }else {
     echo "0" ; 
 }

用户表如下所示:

ID    USERNAME
1     heihei
2     neinei

$username定义为heihei时,结果为0

如果我将$username定义为something,则结果相同。

它将显示用户已经不存在。

这里有什么问题?

3 个答案:

答案 0 :(得分:1)

这样做:

替换

if (mysqli_num_rows($checkquery)) {

使用:

if (mysqli_num_rows($checkquery) > 0) {

并将echo ">0" ;替换为echo "Exists"; - 这就是我成功使用的内容。


也可以尝试:

$results = "SELECT username FROM users WHERE username = '$username'";

$checkquery = mysqli_query($con,$results) or die(mysqli_error());

  if (mysqli_num_rows($checkquery) > 0) {

我在我的脚本中执行此操作的方式是:

$mysqli = new mysqli("xxx","xxx", "xxx", "xxx");
$username = mysqli_real_escape_string($mysqli,$_POST['username']);
$username = $_POST['username'];
$sql = "SELECT username FROM users WHERE username  = '$username'";

   $results = mysqli_query($mysqli,$sql) or die(mysqli_error());
   if (mysqli_num_rows($results) > 0)

{

die("Sorry, that username is already taken.");

}

答案 1 :(得分:1)

您还可以使用其他查询:

SELECT COUNT(*) FROM users WHERE `username` = '$username'

并查看结果

答案 2 :(得分:0)

if(mysqli_num_rows(mysqli_query($checkquery))== 0){
    echo "no duplicates";
}