帮助中心 >  技术知识库 >  云服务器 >  服务器教程 >  PHP “Call to a member function row_array () on boolean” 报错原因及解决办法

PHP “Call to a member function row_array () on boolean” 报错原因及解决办法

2025-02-26 17:11:48 1817

php程序报错Fatal error Call to a member function row_array() on boolean in的原因及解决办法


欢迎来到蓝队云技术小课堂,每天分享一个技术小知识。


php程序出现 Fatal error: Call to a member function row_array() on boolean 错误的原因可能是 $this->db->get($table) 返回了布尔值 false,而不是一个查询结果对象。这通常发生在查询失败时,例如由于 SQL 语法错误或数据库连接问题。


解决方法

检查查询是否成功: 在调用 row_array() 之前,检查查询结果是否为有效的对象。

if (!empty($like)) {

    foreach ($like as $k => $v) {

        $this->db->like($k, $v); // 搜索条件

    }

    $this->db->select('count(*) as count');

    $query = $this->db->get($table);

    if ($query !== false) {

        $rows = $query->row_array();

        $nums = isset($rows['count']) ? (int) $rows['count'] : 0;

    } else {

        // 查询失败的处理逻辑

        $nums = 0;

    }

    return $nums;}

检查 SQL 语法: 确保 $like 数组中的键和值正确无误,并且 SQL 查询语法正确。如果查询失败,可能是 SQL 语法错误导致的。

使用 num_rows() 检查结果: 如果查询成功但没有结果,row_array() 会返回 null。可以使用 num_rows() 检查结果集是否为空。

$query = $this->db->get($table);if ($query->num_rows() > 0) {

    $rows = $query->row_array();

    $nums = (int) $rows['count'];} else {

    $nums = 0;}

调试查询: 使用 $this->db->last_query() 查看生成的 SQL 查询,以便调试。

echo $this->db->last_query();


示例代码

以下是完整的示例代码,展示如何正确处理查询结果:

php复制

if (!empty($like)) {

    foreach ($like as $k => $v) {

        $this->db->like($k, $v); // 搜索条件

    }

    $this->db->select('count(*) as count');

    $query = $this->db->get($table);

    if ($query !== false && $query->num_rows() > 0) {

        $rows = $query->row_array();

        $nums = isset($rows['count']) ? (int) $rows['count'] : 0;

    } else {

        $nums = 0;

    }

    return $nums;}


通过以上方法,可以有效避免 Fatal error: Call to a member function row_array() on boolean 错误。如果问题仍然存在,可能需要进一步排查。


蓝队云官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,蓝队云整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。

更多技术知识,蓝队云期待与你一起探索。

提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: