首頁  >  文章  >  後端開發  >  為什麼在 PHP 中從單獨的類別存取 MySQLi 連線時會收到「500 內部伺服器錯誤」?

為什麼在 PHP 中從單獨的類別存取 MySQLi 連線時會收到「500 內部伺服器錯誤」?

DDD
DDD原創
2024-10-26 05:48:02421瀏覽

Why Am I Getting a

如何從PHP 中的單獨類別存取MySQLi

嘗試從單獨的類別建立資料庫連線時遇到錯誤在PHP 中使用MySQLi 。當您嘗試存取連線物件時,錯誤為“Internal Server Error 500”,這表示您的程式碼或設定有問題。

要解決此問題,讓我們分析程式碼並確定關鍵點:

資料庫類:

資料庫類包含連接資料庫的必要信息,例如伺服器名稱、使用者名稱、密碼和資料庫名稱。

API 類別:

在 API 類別中,您可以使用 new Database() 初始化 $db 屬性。這將建立一個新的資料庫連接對象,該對象與資料庫類別的 __construct 方法中建立的連接不同。

函數呼叫:

然後您嘗試使用 $this->db->conn 物件執行查詢,該物件在 MyAPI 類別中未定義。這是因為 $conn 屬性僅在 Database 類別中定義。

解決方案:

要存取 MyAPI 類別中的資料庫連接對象,需要透過建立資料庫的新實例時將其作為建構函數參數。

以下是更正後的程式碼:

Database.php:

<code class="php">class Database
{
    private $conn;

    public function __construct()
    {
        $this->conn = new mysqli(...connection details...);
    }

    public function getConn()
    {
        return $this->conn;
    }
}</code>

MyAPI.php:

<code class="php">class MyAPI
{
    private $db;

    public function __construct($db)
    {
        $this->db = $db;
    }

    public function getUser($id)
    {
        $sql = ...query...;
        $result = mysqli_query($this->db->getConn(), $sql);
        return mysqli_fetch_assoc($result);
    }
}</code>
MyAPI.php:

MyAPI.php:

<code class="php">$db = new Database();
$api = new MyAPI($db);
$user = $api->getUser($_POST['id']);</code>

app.php:

此方法可確保在MyAPI 中存取資料庫連線物件類,讓您成功執行查詢並擷取資料。

以上是為什麼在 PHP 中從單獨的類別存取 MySQLi 連線時會收到「500 內部伺服器錯誤」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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