- 工信部备案号 滇ICP备05000110号-1
- 滇公安备案 滇53010302000111
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
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 错误。如果问题仍然存在,可能需要进一步排查。
蓝队云官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,蓝队云整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。
售前咨询
售后咨询
备案咨询
二维码
TOP