- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會理事單位
- 安全聯(lián)盟認(rèn)證網(wǎng)站身份V標(biāo)記
- 域名注冊服務(wù)機(jī)構(gòu)許可:滇D3-20230001
- 代理域名注冊服務(wù)機(jī)構(gòu):新網(wǎng)數(shù)碼
php程序報錯Fatal error Call to a member function row_array() on boolean in的原因及解決辦法
歡迎來到藍(lán)隊(duì)云技術(shù)小課堂,每天分享一個技術(shù)小知識。
php程序出現(xiàn) Fatal error: Call to a member function row_array() on boolean 錯誤的原因可能是 $this->db->get($table) 返回了布爾值 false,而不是一個查詢結(jié)果對象。這通常發(fā)生在查詢失敗時,例如由于 SQL 語法錯誤或數(shù)據(jù)庫連接問題。
解決方法
檢查查詢是否成功: 在調(diào)用 row_array() 之前,檢查查詢結(jié)果是否為有效的對象。
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 數(shù)組中的鍵和值正確無誤,并且 SQL 查詢語法正確。如果查詢失敗,可能是 SQL 語法錯誤導(dǎo)致的。
使用 num_rows() 檢查結(jié)果: 如果查詢成功但沒有結(jié)果,row_array() 會返回 null??梢允褂?num_rows() 檢查結(jié)果集是否為空。
$query = $this->db->get($table);if ($query->num_rows() > 0) {
$rows = $query->row_array();
$nums = (int) $rows['count'];} else {
$nums = 0;}
調(diào)試查詢: 使用 $this->db->last_query() 查看生成的 SQL 查詢,以便調(diào)試。
echo $this->db->last_query();
示例代碼
以下是完整的示例代碼,展示如何正確處理查詢結(jié)果:
php復(fù)制
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 錯誤。如果問題仍然存在,可能需要進(jìn)一步排查。
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP