mysqli_num_rows无论如何返回1

时间:2013-08-05 18:37:16

标签: php mysqli

当我在phpMyAdmin中进行SQL搜索(用变量替换实际值)时,它会返回正确的行号,但是当使用PHP返回此值时,无论如何都会返回1。提前谢谢。

function user_exists($username) {
    $link = mysqli_connect('localhost','root','','test');
    $username = sanitize($username);
    $query = mysqli_query($link, "SELECT COUNT(`user_id`) FROM `new_base` WHERE `username`='$username'");
    $row_cnt = mysqli_num_rows($query);
    echo $row_cnt;
    mysqli_free_result($query);
    mysqli_close($link);
}

2 个答案:

答案 0 :(得分:5)

当您使用COUNT(*)时,即使计数为零,总是会返回一行

你要么:

  1. 要删除count(*),然后使用mysqli_num_rows()
  2. 获取count(*)
  3. 的结果

    $row = mysqli_fetch_assoc($query);
    echo $row['COUNT(`user_id`)'];
    

答案 1 :(得分:1)

计数会重新单行。尝试在phpmyadmin中测试SQL并查看结果。 查询返回的这一行包含您要查找的数字。

我建议也做类似

的事情
SELECT COUNT('user_id') AS user_matches FROM ....

这样您就可以通过' user_matches'键。

*我会建议使用带有num_rows的SELECT * FROM ... *,与count()相比,这会非常慢。