MySQLi - 总是返回1行

时间:2015-01-04 02:22:40

标签: php mysqli

所以,我编写了一个函数来检查我的数据库,看看是否已经使用了用户名。

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

不确定为什么,任何想法?

功能:

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>";
}

2 个答案:

答案 0 :(得分:0)

先尝试检查然后再查询

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

答案 1 :(得分:0)

根据我的经验,MySQL可以为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