检查用户名是否存在

时间:2013-03-23 15:11:53

标签: php mysqli

$username = $this->mysqli->real_escape_string( $param['username'] );        

$sql = "SELECT * FROM user WHERE username = '{$username}'";
$result = $this->mysqli->multi_query($sql);
if( !$result ){
    //username doesnot exist, create new one.
}else{
   //username exist
}

编写上面的代码是为了检查用户名是否已经存在!!但无论输入是什么,输出都将是用户名存在。请帮忙。

2 个答案:

答案 0 :(得分:0)

您只是检查查询是否成功运行。您想要检查查询返回的行数。

$sql = "SELECT * FROM user WHERE username = '{$username}'";
if($result = $this->mysqli->multi_query($sql))
{
  $row_cnt = $result->num_rows;

    if($row_cnt > 0){
        // username exists        
    }
    else{
        // username does not exist
    }

}

另外,正如上面有人建议的那样,为什么使用multi_query - 您的意思是使用query吗?

答案 1 :(得分:0)

从手册:

  

失败时返回FALSE。对于成功的SELECT,SHOW,DESCRIBE或EXPLAIN查询,mysqli_query()将返回一个mysqli_result对象。对于其他成功的查询,mysqli_query()将返回TRUE。

您需要$ result-> num_rows来获取结果数量

if($result ){
   if($result->num_rows == 0){
        // user doesn't exist
   else{
        // user exist
   }
}
else{
   //error
}