Eine Fehlermeldung mit der Meldung „Nicht erfasster Fehler: Aufruf einer undefinierten Methodendatenbank“. ::prepare()“ kann auftreten, wenn versucht wird, eine PDO-Verbindung in einer separaten Klasse zu verwenden. Dieser Fehler ist auf ein Missverständnis darüber zurückzuführen, wie objektorientierte Programmierung (OOP) Objekte miteinander verbindet.
1. Überdenken Sie Ihre Datenbankklasse:
Die vorhandene Datenbankklasse erfüllt keinen sinnvollen Zweck. Konzentrieren Sie sich stattdessen auf die Erstellung einer Wrapper-Klasse, wenn diese die Funktionalität von PDO erweitert.
2. Stellen Sie eine zentrale Datenbankverbindung her:
Instanziieren Sie ein eigenständiges $db-Objekt mithilfe von PDO oder Ihrer erweiterten Datenbankklasse. Diese einzelne Verbindung wird als Grundstein für alle zukünftigen Datenbankaktivitäten dienen.
3. Übergeben Sie die Verbindung als Konstruktorparameter:
Jede Klasse, die Datenbankzugriff benötigt, sollte die $db-Verbindung als Konstruktorargument erhalten. Dieser Ansatz garantiert einen nahtlosen Zugriff auf die Datenbank während Ihrer gesamten Anwendung.
Betrachten Sie Folgendes als verbessert Codebasis:
database.php:
$host = '127.0.0.1'; $db = 'test'; $user = 'root'; $pass = ''; $charset = 'utf8'; $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; $opt = [ \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC, \PDO::ATTR_EMULATE_PREPARES => false, ]; $pdo = new \PDO($dsn, $user, $pass, $opt);
user.php:
class User { /* Properties */ private $conn; /* Get database access */ public function __construct(\PDO $pdo) { $this->conn = $pdo; } /* List all users */ public function getUsers() { return $this->conn->query("SELECT username, usermail FROM user")->fetchAll(); } }
app .php:
include 'database.php'; $user = new User($pdo); $list = $user->getUsers(); foreach($list as $test) { echo $test["username"],"\n"; }
Diese verfeinerte Codebasis veranschaulicht die korrekte Verwendung von PDO-Verbindungen in mehreren Klassen sorgen für einen fehlerfreien Betrieb und elegante Codierungspraktiken.
Das obige ist der detaillierte Inhalt vonWie verwende ich eine PDO-Verbindung über mehrere Klassen hinweg in PHP richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!