MySQLi - 总是返回 1 行

MySQLi - Always Returning 1 Row

因此,我编写了一个函数来检查我的数据库以查看用户名是否已被占用。

基本上,对于行数它总是返回 1,即使变量 $user 不是数据库中的用户名。

不知道为什么,有什么想法吗?

函数:

function userTaken($user){
    require_once('db.php');
    $taken = mysqli_query($mysqli, "SELECT * FROM users WHERE username = '$user'");
    if (!$taken) {
        die(mysqli_error($mysqli));
    }
    $cnt = mysqli_num_rows($taken);
    if($cnt > 0){
        return true;
    } else {
        return false;
    }
}

调用函数:

if(userTaken($user)){
    echo "<font color='red'>That username is already taken!</font>";
}

尝试先查询再查询

 if(isset($user) && $user!='') 
 {
  $taken = mysqli_query($mysqli, "SELECT * FROM users WHERE username = '$user'");
 }

根据我的经验,MySQL 可以 return 为 row_count

提供一些时髦的值

也许

 result = $db->query($mysqli, "SELECT COUNT(*) AS cnt FROM users WHERE username = '$user'")
 while($row = $result->fetch_assoc()){
    echo $row['username'] . '<br />';
} 

或尝试

/* Select queries return a resultset */
if ($result = $mysqli->query("SELECT Name FROM City LIMIT 10")) {
    printf("Select returned %d rows.\n", $result->num_rows);

    /* free result set */
    $result->close();
}

http://php.net/manual/en/mysqli.query.php