$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
}
编写上面的代码是为了检查用户名是否已经存在!!但无论输入是什么,输出都将是用户名存在。请帮忙。
答案 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
}