首頁 > 後端開發 > php教程 > 如何修復 MySQLi 中的「在非物件上呼叫成員函數 fetch_assoc()」錯誤?

如何修復 MySQLi 中的「在非物件上呼叫成員函數 fetch_assoc()」錯誤?

Linda Hamilton
發布: 2024-12-07 20:22:16
原創
467 人瀏覽過

How to Fix the

對「在非物件上呼叫成員函數fetch_assoc()」錯誤進行故障排除

使用mysqli 擴充執行資料庫查詢時,可能會遇到錯誤「致命錯誤:呼叫非物件上的成員函數fetch_assoc()。

問題分析

在給定的程式碼片段中,出現錯誤是因為 $result 變數在執行後沒有檢查錯誤查詢被執行。因此,如果查詢失敗,則有可能 $result 為 null,導致後續呼叫 fetch_assoc() 失敗。

解決方案

要解決此問題,需要檢查mysqli_query() 呼叫錯誤的結果。如果查詢失敗,則應拋出異常以指示錯誤。修改後的程式碼如下:

function get_recent_highs($view_deleted_images = false)
{
    $lower = $this->database->conn->real_escape_string($this->page_size * ($this->page_number - 1));
    $query = "SELECT image_id, date_uploaded FROM `images` ORDER BY ((SELECT SUM( image_id=`images`.image_id ) FROM `image_votes` AS score) / (SELECT DATEDIFF( NOW( ) , date_uploaded ) AS diff)) DESC LIMIT " . $this->page_size . " OFFSET $lower";
    $result = $this->database->query($query);

    if (!$result) {
        throw new Exception("Database Error [{$this->database->errno}] {$this->database->error}");
    }

    $page = array();
    while($row = $result->fetch_assoc())
    {
        try
        {
            array_push($page, new Image($row['image_id'], $view_deleted_images));
        }
        catch(ImageNotFoundException $e)
        {
            throw $e;
        }
    }

    return $page;
}
登入後複製

透過新增 if (!$result) 檢查,程式碼可確保妥善處理任何資料庫錯誤並引發適當的例外。

以上是如何修復 MySQLi 中的「在非物件上呼叫成員函數 fetch_assoc()」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板