首頁  >  文章  >  後端開發  >  在 PHP 程式碼中使用 PDO 時,為什麼會收到「致命錯誤:在 null 上呼叫成員函數準備()」?

在 PHP 程式碼中使用 PDO 時,為什麼會收到「致命錯誤:在 null 上呼叫成員函數準備()」?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-01 16:32:02661瀏覽

Why am I getting a

修正「致命錯誤:在null 上呼叫成員函數prepare()」

簡介

當嘗試使用PHP 物件導向的方法,遇到「致命錯誤:在null 上呼叫成員函數prepare()」可能會令人沮喪。此錯誤表示 PHP 腳本正在嘗試存取尚未正確實例化或初始化的物件的方法(在本例中為prepare() 方法)。

問題分析

問題中提供的錯誤表明,當調用Category類別的prepare()方法時,$pdo變數為null。這表示用於連接資料庫並與資料庫互動的 PDO 物件尚未在全域範圍內建立。

解決方案

要解決該錯誤,PDO 物件必須正確初始化並連接到資料庫。可以將以下程式碼加入腳本頂部、任何函數或類別定義之外:

<code class="php">$pdo = new PDO('mysql:host=localhost;dbname=test', $user, $pass);</code>

將localhost 替換為資料庫伺服器的名稱,使用資料庫名稱進行測試,將$user 替換為資料庫

此程式碼建立一個新的PDO 物件並將其連接到資料庫。現在,$pdo變數將可供Category類別中的所有方法使用,並且可以呼叫prepare()方法而不會遇到錯誤。

附加說明

1.全域作用域:
$pdo 變數應該在全域作用域中聲明,以確保它可以被Category 類別中的所有方法訪問。類別中定義的方法只能存取全域宣告的變數或作為參數傳遞給該方法的變數。

2.錯誤來源:
問題中提供的程式碼不包含發生錯誤的行。因此,只能推測錯誤是由於呼叫prepare()方法時$pdo為空值所導致的。

3.類別方法初始化:
Category 類別中的fetch_all() 和fetch_data() 方法都依賴$pdo 變量,因此只能在$pdo 變量在全域範圍內成功初始化後呼叫它們.

以上是在 PHP 程式碼中使用 PDO 時,為什麼會收到「致命錯誤:在 null 上呼叫成員函數準備()」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn