Heim > Datenbank > MySQL-Tutorial > Wie greife ich von verschiedenen Klassen in PHP aus ordnungsgemäß auf eine MySQLi-Datenbankverbindung zu?

Wie greife ich von verschiedenen Klassen in PHP aus ordnungsgemäß auf eine MySQLi-Datenbankverbindung zu?

Barbara Streisand
Freigeben: 2024-12-08 15:12:11
Original
1020 Leute haben es durchsucht

How to Properly Access a MySQLi Database Connection from Different Classes in PHP?

Verwendung von MySQLi aus einer anderen Klasse in PHP: Eine detaillierte Aufschlüsselung

In dieser Abfrage hat der Benutzer MySQL nach dem Übergang von PHP auf MySQLi aktualisiert 5,6 bis 7,0. Nachdem sie der Anleitung „Verwenden von MySQLi in anderen Klassen“ gefolgt waren, stießen sie auf den internen Serverfehler 500, als sie versuchten, von einer anderen Klasse aus auf eine Datenbankverbindung zuzugreifen.

Um den Fehler zu verstehen, untersuchen wir den PHP-Code des Benutzers. Sie haben drei Klassen: eine Datenbankklasse zum Herstellen der MySQLi-Verbindung, eine MyAPI-Klasse, in der sie versuchen, auf diese Verbindung zuzugreifen, und eine separate Funktion, in der sie die eigentliche Datenbankabfrage durchführen.

Fehleranalyse

Das Problem ergibt sich aus mehreren grundlegenden Problemen im Code:

  1. Falsche Klasse Hierarchie: Die Erweiterung der User-Klasse aus der Database-Klasse ist ein falscher Ansatz.
  2. Redundante Database-Klasse: Die Database-Klasse dient im Wesentlichen keinem praktischen Zweck und verkompliziert den Code unnötig.

Lösung

Um diese Probleme anzugehen, ist die Folgende Schritte werden empfohlen:

  1. Entfernen Sie die Datenbankklasse: Da sie keine wesentliche Funktionalität bietet, sollte die Datenbankklasse entfernt werden.
  2. Erstellen Sie eine Einzelne $db-Instanz: Erstellen Sie eine einzelne Instanz von $db mit Vanilla MySQLi.
  3. Pass $db als Konstruktorparameter: Übergeben Sie in jeder Klasse, die eine Datenbankverbindung erfordert, die $db-Instanz als Konstruktorparameter.

Hier ist ein verbesserter PHP-Code Beispiel:

database.php

<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = new mysqli("localhost", "DBUserName", "UserPassword", "SelectedDB");
$db->set_charset('utf8mb4');
Nach dem Login kopieren

myapi.php

<?php
class MyAPI
{
    protected $db;

    public function __construct($db, $request_uri, $postData, $origin)
    {
        $this->db = $db;
    }

    public function getUser($id)
    {
        $sql = "SELECT * FROM users where>
Nach dem Login kopieren

app.php

<?php
# require_once 'Database.php';
# require_once 'myapi.php';
require 'vendor/autoload.php'; // autoloading is a must

$api = new MyAPI($db, $request_uri, $postData, $origin);
$user = $api->getUser($_POST['id']);
Nach dem Login kopieren

Mit diesen Änderungen sollte der Benutzer in der Lage sein, eine ordnungsgemäße Verbindung herzustellen MySQLi-Verbindung und Durchführung von Datenbankabfragen aus verschiedenen Klassen.

Das obige ist der detaillierte Inhalt vonWie greife ich von verschiedenen Klassen in PHP aus ordnungsgemäß auf eine MySQLi-Datenbankverbindung zu?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage