首頁 > 後端開發 > php教程 > 為什麼我在 PHP 中收到「在非物件上呼叫成員函數準備()」錯誤?

為什麼我在 PHP 中收到「在非物件上呼叫成員函數準備()」錯誤?

DDD
發布: 2024-11-28 11:45:14
原創
644 人瀏覽過

Why Am I Getting the

PHP:解決「在非物件上呼叫成員函數prepare()」錯誤

在PHP 中使用準備好的語句時, 「在非物件上呼叫成員函數prepare()」錯誤表示資料庫連線不正確或遺失。若要解決此問題,請確保在函數中正確建立並可存取資料庫連線。

在提供的範例中,發生錯誤是因為 $DBH 變數在 selectInfo() 函數中不可存取。這是由於範圍可變。為了解決這個問題,我們有幾個選項:

  1. 使用global 關鍵字:

    • 透過在$DBH 變數前面加上它來使$DBH 變數成為全域變數與全域,允許函數存取它。但是,不建議這樣做,因為它會污染全域命名空間。
  2. 將資料庫連接作為參數傳遞:

    • 將$DBH 變數作為參數傳遞給selectInfo() 函數,確保其在函數內的可用性。這保持了變數局部性,但需要修改函數呼叫。
  3. 建立資料庫連接檢索函數:

    • 定義一個函數來擷取資料庫連接,使其可供需要它資料庫連接,使其可供需要它的函數使用。這封裝了連接邏輯並避免引用全域變數。
  4. 實作資料庫包裝類別:

    • 封裝資料庫存取在類別中,提供一個介面來執行操作,而無需直接操作連接。這允許集中連接管理並簡化資料庫互動。
  5. 使用預先建置的框架或程式庫:

    • 利用已建立的框架或資料庫存取程式庫,它們提供了一種結構化且有效的方法來處理資料庫連接和操作,包括準備好的

透過使用其中一種方法,您可以建立正確的連接並解決「在非物件上呼叫成員函數prepare()」錯誤,讓您準備好的語句成功執行。

以上是為什麼我在 PHP 中收到「在非物件上呼叫成員函數準備()」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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