Warum erhalte ich einen „500 Internal Server Error' beim Zugriff auf eine MySQLi-Verbindung über eine separate Klasse in PHP?

DDD
Freigeben: 2024-10-26 05:48:02
Original
428 Leute haben es durchsucht

Why Am I Getting a

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

app.php:

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

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage