So greifen Sie von einer separaten Klasse in PHP auf MySQLi zu
Beim Versuch, eine Datenbankverbindung von einer separaten Klasse aus herzustellen, tritt ein Fehler auf in PHP mit MySQLi. Der Fehler ist „Internal Server Error 500“, wenn Sie versuchen, auf das Verbindungsobjekt zuzugreifen, was auf ein Problem mit Ihrem Code oder Ihrer Konfiguration hinweist.
Um dieses Problem zu beheben, analysieren wir den Code und identifizieren wichtige Punkte:
Datenbankklasse:
Die Datenbankklasse enthält die notwendigen Informationen zum Herstellen einer Verbindung zur Datenbank, wie z. B. den Servernamen, den Benutzernamen, das Passwort und den Datenbanknamen.
API-Klasse:
Innerhalb der API-Klasse initialisieren Sie die $db-Eigenschaft mit new Database(). Dadurch wird ein neues Datenbankverbindungsobjekt erstellt, das sich von der Verbindung unterscheidet, die innerhalb der __construct-Methode der Datenbankklasse erstellt wurde.
Funktionsaufruf:
Sie versuchen es dann Führen Sie eine Abfrage mit dem Objekt $this->db->conn aus, das in der MyAPI-Klasse nicht definiert ist. Dies liegt daran, dass die Eigenschaft $conn nur innerhalb der Datenbankklasse definiert ist.
Lösung:
Um auf das Datenbankverbindungsobjekt innerhalb der MyAPI-Klasse zuzugreifen, müssen Sie übergeben es als Konstruktorargument beim Erstellen einer neuen Datenbankinstanz.
Hier ist der korrigierte Code:
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>
app.php:
<code class="php">$db = new Database(); $api = new MyAPI($db); $user = $api->getUser($_POST['id']);</code>
Dieser Ansatz stellt sicher, dass das Datenbankverbindungsobjekt innerhalb der MyAPI zugänglich ist Klasse, mit der Sie Abfragen ausführen und Daten erfolgreich abrufen können.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich einen „500 Internal Server Error' beim Zugriff auf eine MySQLi-Verbindung über eine separate Klasse in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!