$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;
}
最佳答案
使用EXISTS
:
SELECT EXISTS (SELECT 1 FROM users WHERE onduty = 1 AND loc_id = '{$site}') AS test;
如果找不到符合条件的行,您的原始查询将返回“无行”。每次返回 TRUE
(1
) 或 FALSE
(0
)。
在可能有多行匹配条件的情况下,您只关心是否至少有一行存在,EXISTS
的性能优于普通查询。它可以在找到第一行后立即停止,并且只返回 0
或 1
。
关于php - 测试 SQL 查询的真假,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13784670/