我的mysql查询导致行数为1,无论值是否存在

时间:2011-04-22 18:00:43

标签: php mysql

这是我的mysql声明:

$result = mysql_query("select count(*) from usersecurity where 
     email='".$_SESSION['username']."'"); 
echo mysql_num_rows($result);

问题是,根据我的理解,它总是返回值1,即使表中不存在用户名......为什么会这样?

5 个答案:

答案 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];