这是我的mysql声明:
$result = mysql_query("select count(*) from usersecurity where
email='".$_SESSION['username']."'");
echo mysql_num_rows($result);
问题是,根据我的理解,它总是返回值1,即使表中不存在用户名......为什么会这样?
答案 0 :(得分:4)
因为SELECT COUNT(*) ...
返回一行,其中一个值包含零。
答案 1 :(得分:1)
COUNT(*)
将始终返回一行,即使结果为零。您需要检查该列的结果:
SELECT COUNT(*) AS count FROM t1 WHERE email = "SOME NON EXISTENT EMAIL";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
echo $row['count']; // 0
另一种方法是选择计数作为行数:
SELECT TRUE FROM t1 WHERE email = "SOME NON EXISTENT EMAIL";
$result = mysql_query($query);
echo mysql_num_rows($result); // 0
答案 2 :(得分:1)
COUNT(*)查询始终返回单行。如果您想要$行,请执行以下操作之一。
$result = mysql_query("select count(*) as ROWS from usersecurity where
email='".$_SESSION['username']."'");
$rows = mysql_fetch_assoc($result);
echo $rows['ROWS'];
或
$result = mysql_query("select * as ROWS from usersecurity where
email='".$_SESSION['username']."'");
echo mysql_num_rows($result);
答案 3 :(得分:0)
您将始终从结果查询中获取一行。该值将大于或等于零。您需要检查返回的实际计数而不是返回的行数。
答案 4 :(得分:0)
您的SELECT查询返回以下内容:
select count(*)...
----------------------
0
因此,mysql_num_rows($result)
适当地返回1作为结果。如果您希望获得计数值,那么您需要采取如下方法:
$result = mysql_query("select count(*) from usersecurity where
email='".$_SESSION['username']."'");
$row = mysql_fetch_array($result);
echo $row[0];