Heim  >  Artikel  >  Backend-Entwicklung  >  Warum erhalte ich einen „Schwerwiegenden Fehler: Aufruf einer Mitgliedsfunktion Prepare() auf Null“, wenn ich PDO in meinem PHP-Code verwende?

Warum erhalte ich einen „Schwerwiegenden Fehler: Aufruf einer Mitgliedsfunktion Prepare() auf Null“, wenn ich PDO in meinem PHP-Code verwende?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-01 16:32:02661Durchsuche

Why am I getting a

Behebung von „Schwerwiegender Fehler: Aufruf einer Mitgliedsfunktion Prepare() auf Null“

Einführung

Beim Versuch, mit einer Datenbank über a zu interagieren Beim objektorientierten PHP-Ansatz kann es frustrierend sein, auf den „Schwerwiegenden Fehler: Aufruf einer Member-Funktion Prepare() auf Null“ zu stoßen. Dieser Fehler weist darauf hin, dass das PHP-Skript versucht, auf eine Methode (in diesem Fall die Prepare()-Methode) eines Objekts zuzugreifen, das nicht ordnungsgemäß instanziiert oder initialisiert wurde.

Problemanalyse

Der in der Frage angegebene Fehler deutet darauf hin, dass die Variable $pdo null ist, wenn die Prepare()-Methode der Category-Klasse aufgerufen wird. Dies weist darauf hin, dass das PDO-Objekt, das zur Verbindung mit der Datenbank und zur Interaktion mit ihr verwendet wird, nicht im globalen Bereich erstellt wurde.

Lösung

Um den Fehler zu beheben, muss das PDO-Objekt verwendet werden muss ordnungsgemäß initialisiert und mit der Datenbank verbunden sein. Der folgende Code kann am Anfang des Skripts außerhalb jeder Funktions- oder Klassendefinition hinzugefügt werden:

<code class="php">$pdo = new PDO('mysql:host=localhost;dbname=test', $user, $pass);</code>

Ersetzen Sie „localhost“ durch den Namen Ihres Datenbankservers, „test“ durch den Datenbanknamen und „$user“ durch die Datenbank Benutzername und $pass mit dem Datenbankpasswort.

Dieser Code erstellt ein neues PDO-Objekt und verbindet es mit der Datenbank. Jetzt steht die Variable $pdo allen Methoden innerhalb der Category-Klasse zur Verfügung und die Methode Prepare() kann aufgerufen werden, ohne dass ein Fehler auftritt.

Zusätzliche Hinweise

1. Globaler Gültigkeitsbereich:
Die Variable $pdo sollte im globalen Gültigkeitsbereich deklariert werden, um sicherzustellen, dass sie für alle Methoden innerhalb der Category-Klasse zugänglich ist. Innerhalb einer Klasse definierte Methoden können nur auf Variablen zugreifen, die global deklariert oder als Argumente an die Methode übergeben werden.

2. Fehlerursprung:
Der in der Frage bereitgestellte Code enthält nicht die Zeile, in der der Fehler auftritt. Daher kann nur vermutet werden, dass der Fehler durch den Nullwert von $pdo verursacht wird, wenn die Prepare()-Methode aufgerufen wird.

3. Initialisierung der Klassenmethode:
Die Methoden fetch_all() und fetch_data() in der Category-Klasse basieren beide auf der Variablen $pdo und sollten daher erst aufgerufen werden, nachdem die Variable $pdo im globalen Bereich erfolgreich initialisiert wurde .

Das obige ist der detaillierte Inhalt vonWarum erhalte ich einen „Schwerwiegenden Fehler: Aufruf einer Mitgliedsfunktion Prepare() auf Null“, wenn ich PDO in meinem PHP-Code verwende?. 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