php程序報(bào)錯(cuò)Fatal error Call to a member function row_array() on boolean in的原因及解決辦法
歡迎來(lái)到藍(lán)隊(duì)云技術(shù)小課堂,每天分享一個(gè)技術(shù)小知識(shí)。
php程序出現(xiàn) Fatal error: Call to a member function row_array() on boolean 錯(cuò)誤的原因可能是 $this->db->get($table) 返回了布爾值 false,而不是一個(gè)查詢結(jié)果對(duì)象。這通常發(fā)生在查詢失敗時(shí),例如由于 SQL 語(yǔ)法錯(cuò)誤或數(shù)據(jù)庫(kù)連接問(wèn)題。
解決方法
檢查查詢是否成功: 在調(diào)用 row_array() 之前,檢查查詢結(jié)果是否為有效的對(duì)象。
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 語(yǔ)法: 確保 $like 數(shù)組中的鍵和值正確無(wú)誤,并且 SQL 查詢語(yǔ)法正確。如果查詢失敗,可能是 SQL 語(yǔ)法錯(cuò)誤導(dǎo)致的。
使用 num_rows() 檢查結(jié)果: 如果查詢成功但沒(méi)有結(jié)果,row_array() 會(huì)返回 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;}
通過(guò)以上方法,可以有效避免 Fatal error: Call to a member function row_array() on boolean 錯(cuò)誤。如果問(wèn)題仍然存在,可能需要進(jìn)一步排查。
藍(lán)隊(duì)云官網(wǎng)上擁有完善的技術(shù)支持庫(kù)可供參考,大家可自行查閱,更多技術(shù)問(wèn)題,可以直接咨詢。同時(shí),藍(lán)隊(duì)云整理了運(yùn)維必備的工具包免費(fèi)分享給大家使用,需要的朋友可以直接咨詢。
更多技術(shù)知識(shí),藍(lán)隊(duì)云期待與你一起探索。