MySQL 中的 mysql_num_rows() 函数报错解决方法

MySQL 中的 mysql_num_rows() 函数报错解决方法

在本文中,我们将介绍 MySQL 数据库中常见报错信息之一:mysql_num_rows() 函数报错,提供相应的解决方法。

阅读更多:MySQL 教程

错误信息

在使用 MySQL 数据库操作时,经常会用到 mysql_num_rows() 函数来获取结果集中的数据行数。但有时候会出现以下报错信息:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in xxx.php on line xxx
Mysql

同时,由于该错误信息只是一个警告,因此下面的代码仍然会继续执行,导致结果可能不准确。因此,在使用 mysql_num_rows() 函数时需要特别注意。

报错原因

该报错信息出现的主要原因是,mysql_num_rows() 函数的参数并不是结果集,而是 mysqli_query() 函数的返回值,即查询语句执行的结果资源句柄。当查询语句执行失败时,mysqli_query() 函数会返回 false,而不是结果资源句柄,这时候如果将 false 作为参数传给 mysql_num_rows() 函数,就会出现上述报错信息。

下面是一个例子:

$sql = "SELECT * FROM users";
$result = mysqli_query($conn, $sql); // 查询语句执行成功,返回结果资源句柄
if ($result) {
    $num_rows = mysql_num_rows($result); // 使用 mysql_num_rows() 函数获取结果集行数
    echo "共有 " . $num_rows . " 条记录";
} else {
    echo "查询失败";
}
Mysql

如果查询语句执行失败,$result 变量将会得到 false,将 false 作为参数传给 mysql_num_rows() 函数时就会出现上述报错信息。

解决方法

解决上述报错信息只需要将 mysql_num_rows() 函数的参数改为mysqli_query() 函数的返回值即可,同时在参数传递前需要进行类型判断,确保传递的是结果资源句柄。

改进后的代码如下:

$sql = "SELECT * FROM users";
$result = mysqli_query($conn, $sql); // 查询语句执行成功,返回结果资源句柄
if (is_object($result)) { // 判断查询结果是否为对象
    $num_rows = mysql_num_rows($result); // 使用 mysql_num_rows() 函数获取结果集行数
    echo "共有 " . $num_rows . " 条记录";
} else {
    echo "查询失败";
}
Mysql

修改后,如果查询语句执行失败,$result 变量将会得到 false,由于 false 不是一个对象,因此不会传递给 mysql_num_rows() 函数,同时也能够避免上述报错信息的出现。

总结

本文介绍了出现“mysql_num_rows() expects parameter 1 to be resource, boolean given”报错信息的原因和解决方法,提醒读者在使用 mysql_num_rows() 函数时要特别注意传递的参数类型,避免出现不必要的错误。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程