php - 测试 SQL 查询的真假

标签 php mysql sql

$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 的性能优于普通查询。它可以在找到第一行后立即停止,并且只返回 01

db<> fiddle here
<子>旧sqlfiddle

关于php - 测试 SQL 查询的真假,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13784670/

相关文章:

sql - 将多对多关系中的所有相关记录分组,SQL 图形连接组件

mysql - 如何使用具有匹配列对的行数更新列?

php - .htaccess 中定义的操作不执行

php - Paypal REST API item_list 必填字段缺失

Mysql/Mariadb查询在查询数据时动态地将行转换为列

mysql - 如何在 MySQL 中使用 IF 语句设置 WHILE 循环?

php - 我是一名PHP程序员,但我想学习算法。我应该选择哪种语言?

php - 在 PHP 中返回当前 Web 路径

mysql - Workbench 和 InnoDB 错误 150 varchar FK

sql - 我怎样才能让 Rails 5 与其中有一个句点的主键一起玩?