如何從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中文網其他相關文章!