Heim >Datenbank >MySQL-Tutorial >Wie kann ich von einer separaten Klasse in PHP aus ordnungsgemäß auf eine MySQLi-Verbindung zugreifen?

Wie kann ich von einer separaten Klasse in PHP aus ordnungsgemäß auf eine MySQLi-Verbindung zugreifen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-10 16:22:09286Durchsuche

How Can I Properly Access a MySQLi Connection from a Separate Class in PHP?

MySQLi aus einer anderen Klasse in PHP verwenden

Problembeschreibung:

Die Frage sucht nach Hilfe beim Zugriff auf eine MySQLi-Verbindung, die in einer separaten Klasse von einer anderen Klasse aus hergestellt wurde. Eine Datenbankklasse mit einer Verbindungseigenschaft wird erstellt und eine API-Klasse versucht, auf diese Verbindung zuzugreifen. Versuche, auf die Verbindung zuzugreifen, führen jedoch zu einem internen Serverfehler.

Antwort:

Bad Practices und Empfehlungen:

Der bereitgestellte Code enthält mehrere schlechte Praktiken, die zum Fehler beitragen:

  • Erweitern einer Klasse (Benutzer) von Die Database-Klasse ist ungeeignet.
  • Der Database-Klasse fehlen wesentliche Funktionen.

Es wird empfohlen:

  • Die Database-Klasse zu eliminieren, da sie keinen Zweck erfüllt sinnvoller Zweck.
  • Erstellen Sie eine einzelne $db-Instanz aus Vanilla MySQL.
  • Übergeben Sie diese Instanz als ein Konstruktorargument für Klassen, die eine Datenbankverbindung erfordern.

Überarbeitet Code:

database.php:

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

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>

app.php:

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

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

Wenn Sie diese Empfehlungen befolgen, ist dies der Fall Es ist möglich, von einer anderen Klasse aus effektiv und fehlerfrei auf die MySQLi-Verbindung zuzugreifen.

Das obige ist der detaillierte Inhalt vonWie kann ich von einer separaten Klasse in PHP aus ordnungsgemäß auf eine MySQLi-Verbindung zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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