php - $conn->query(...) 的结果是否可以为 0 条记录不为空

标签 php mysql mysqli

我在一些我必须处理的旧 PHP 代码中遇到了以下内容。我的问题是,这两个 If 都需要吗?换句话说,如果返回一个结果,它一定返回了大于零的记录,对吧?反之亦然 - 意思是如果 $result 为 False,我可以假设没有找到任何记录吗?

$sql = "SELECT * FROM houses WHERE ownerphone=$pn";
$result = $conn->query($sql);
if ($result) {
    $count = $result->num_rows;
    if ($count > 0){
       ....Stuff happens here...
    } else {
        ...What happens here?...
    }
} else {
     ...Other Stuff happens here
}

最佳答案

是的,两者都是必需的。

if a result is returned it must have returned greater than zero records, right?

错了。

如果您没有得到结果,那么您会得到一个错误,并且您将没有一个对象来读取返回结果的数量。

可以从成功的请求中取回零行。

if $result is False, can I assume that no records have been found?

嗯,是的。有点。这就是为什么 if 语句会在结果为 False 时阻止您检查是否有许多行。

...但是因为出现错误而没有取回行与因为找不到行而没有取回行是不同的。

关于php - $conn->query(...) 的结果是否可以为 0 条记录不为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45276463/

相关文章:

php - 如何获得序列化输出数据?

MySQL 查询不返回

php - Mysql - PHP - 查看总和列

php - 使用 PHP 将多行 Oracle 结果集插入 MYSQL

php - Google recaptcha 第二次没有在服务器端验证

php - 单选按钮阵列 - 需要帮助

php - INSERT 到数据库后单引号和双引号显示为\' and\"

php - 具有绑定(bind)参数的 PHP MySQLi 准备查询是否安全?

php - jQuery 连接可排序列表,将订单保存到 MySQL

php - 使用 Int 转换的 PDO 准备语句