$sql = "SELECT # FROM users WHERE onduty = 1 AND loc_id = '{$site}';";
$result = mysql_query($sql);
我只想测试这是真还是假。如果它返回0行,我希望下一行是这样的:
if (!$result) { //do this; }
然而,在我的测试中,当我知道它应该是真的时,我会变得虚假。这听起来合乎逻辑吗?
(注意,是的,我知道我应该使用mysqli_query
,这不是我在这里要求的) **
解答: 这就是我使用的:
$login_state = false;
if(mysql_num_rows(mysql_query("SELECT 1 FROM users WHERE onduty = 1 AND loc_id = '{$site}';"))) {
$login_state = true;
}
答案 0 :(得分:5)
使用EXISTS
:
"SELECT EXISTS (SELECT 1 FROM users WHERE onduty = 1 AND loc_id = '{$site}');"
如果找不到符合条件的行,原始查询将返回“no row”。每次都会返回TRUE
(1
)或FALSE
(0
)。
More about EXISTS
in the manual.
如果可以有多个符合条件的行,并且您只关心是否存在至少一行,则EXISTS
的性能优于普通查询。它可以在找到第一行后立即停止,只返回0
或1
。
答案 1 :(得分:3)
使用mysql_num_rows()检查执行查询时返回的行数。
$num_rows = mysql_num_rows($result);
if($num_rows==0)
{
//nothing returned
}
else
{
//rows returned
}
对于相应的mysqli实现,请参阅mysqli_stmt_num_rows()