Heim  >  Artikel  >  Backend-Entwicklung  >  Lösung für PHP Schwerwiegender Fehler: Aufruf einer Mitgliedsfunktion fetch()

Lösung für PHP Schwerwiegender Fehler: Aufruf einer Mitgliedsfunktion fetch()

WBOY
WBOYOriginal
2023-06-23 09:36:151981Durchsuche

Wenn Sie PHP für die Entwicklung von Webanwendungen verwenden, müssen Sie häufig eine Datenbank verwenden. Bei der Verwendung einer Datenbank kommt es sehr häufig zu Fehlermeldungen. Unter ihnen ist PHP Fatal error: Call to a member function fetch() ein relativ häufiger Fehler, der auftritt, wenn PDO zum Abfragen der Datenbank verwendet wird. Was verursacht diesen Fehler und wie kann er behoben werden? In diesem Artikel wird es Ihnen ausführlich erklärt.

1. Fehlerursachen

Bei der Website-Entwicklung ist es oft notwendig, Daten aus der Datenbank abzurufen und zu verarbeiten. PDO ist eine von PHP bereitgestellte Erweiterung, um PHP mit verschiedenen Datenbanken zu verbinden. Wenn Sie PDO zum Betreiben der Datenbank verwenden und die SQL-Anweisung nicht korrekt geschrieben oder das PDO-Objekt nicht korrekt konfiguriert ist, kann ein Fehler beim Aufruf einer Mitgliedsfunktion fetch() auftreten.

Zum Beispiel der folgende Code:

$sql = "SELECT * FROM `staff` WHERE `age` > 18";
$res = $pdo->prepare($sql);
$res->execute();
$data = $res->fetch(PDO::FETCH_ASSOC);

Wenn in der SQL-Abfrageanweisung ein Fehler auftritt oder das PDO-Objekt nicht richtig konfiguriert ist, kann der obige Fehler in der fetch()-Methode auftreten.

2. Fehlerlösungen

Wenn ein Fehler auftritt, muss er behoben werden. Hier sind einige gängige Lösungen:

1. Überprüfen Sie, ob die SQL-Anweisung korrekt ist.

Die SQL-Anweisung ist der Schlüssel für den Zugriff auf die Datenbank. Das korrekte Schreiben von SQL-Anweisungen ist wichtig, um Fehler zu vermeiden. Beim Schreiben von SQL-Anweisungen müssen Sie auf folgende Aspekte achten:

(1) Es muss sichergestellt werden, dass die Schlüsselwörter, Tabellennamen, Feldnamen usw. der SQL-Anweisung in der richtigen Groß- und Kleinschreibung angegeben sind
(2 ) Es muss sichergestellt werden, dass die bedingten Ausdrücke der SQL-Anweisung korrekt sind ;
(3) Es muss sichergestellt werden, dass die Syntax der SQL-Anweisung korrekt ist.

2. Bestätigen Sie, ob die Datenbankverbindung erfolgreich ist

Bei Verwendung von PDO müssen Sie zunächst eine Verbindung zur Datenbank über die Methode PDO::construct() herstellen. Wenn die Datenbankverbindung fehlschlägt, erfolgt ein Aufruf einer Mitgliedsfunktion fetch(). Es wird ein Fehler auftreten. Daher muss festgestellt werden, ob die Datenverbindung erfolgreich ist.

try {
    $pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'password');
} catch (PDOException $e) {
    die ("Error!: " . $e->getMessage() . "<br/>");
}

3. Bestätigen Sie, ob das PDO-Objekt korrekt ist

Nachdem Sie PDO zum Herstellen einer Verbindung zur Datenbank verwendet haben, müssen Sie ein PDOStatement-Objekt abrufen. Dieses Objekt stellt eine vorbereitete Anweisung dar und kann mehrmals ausgeführt werden. Wenn der Abruf des PDO-Objekts fehlschlägt, tritt ein Fehler beim Aufruf einer Mitgliedsfunktion fetch() auf. Bei der Verwendung von PDO-Objekten müssen Sie die folgenden Aspekte bestätigen:

(1) Ob die bei der Instanziierung des PDO-Objekts verwendete Datenquelle und der verwendete Zeichensatz korrekt sind;
(2) ob das PDOStatement-Objekt vorhanden ist; Das PDOStatement-Objekt führt die Abfrageanweisung aus. Sind Sie bereit für den Erfolg?

$sql = "SELECT * FROM `staff` WHERE `age` > 18";
$res = $pdo->prepare($sql);
if(!$res) {
    echo "
PDO::errorInfo():
";
    print_r($pdo->errorInfo());
}
$res->execute();
$data = $res->fetch(PDO::FETCH_ASSOC);

Wenn im obigen Code die Prepare()-Methode von PDO die SQL-Anweisung nicht erfolgreich vorbereiten kann, wird die errorInfo()-Methode von PDO verwendet, um Fehlerinformationen abzurufen.

4. Bestätigen Sie, ob die Abfrage Ergebnisse liefert

Beim Ausführen einer Abfrageoperation müssen Sie bestätigen, ob die Abfrageanweisung Ergebnisse liefert. Wenn die Abfrage keine Ergebnisse liefert, tritt ein Fehler beim Aufruf einer Mitgliedsfunktion fetch() auf.

$sql = "SELECT * FROM `staff` WHERE `age` > 100";
$res = $pdo->prepare($sql);
$res->execute();
$data = $res->fetch(PDO::FETCH_ASSOC);
if(!$data){
    echo "没有结果";
    exit;
}

Wenn im obigen Code das Abfrageergebnis leer ist, gibt das Programm „Keine Ergebnisse“ aus und wird beendet.

3. Wie man Fehler vermeidet

Fehler zu vermeiden ist wichtiger als sie zu lösen. Im Folgenden sind einige gängige Vermeidungsmethoden aufgeführt:

1. Fehlerbehandlungsmechanismus

Das Hinzufügen eines Fehlerbehandlungsmechanismus zum Programm ist eine wichtige Möglichkeit, Fehler zu vermeiden und Fehler zu vermeiden. Sie können Ihrem Code Try-Catch-Anweisungen hinzufügen oder die Methode set_Exception_handler() verwenden, um Fehler zu behandeln.

try {
    $sql = "SELECT * FORM `tableName";
    $res = $pdo->prepare($sql);
    $res->execute();
    $data = $res->fetch(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
    echo $e->getMessage();
    exit;
}

2. Debugging-Programme sind eine gängige Methode zur Fehlervermeidung. Fügen Sie Debugging-Anweisungen in den Programmcode ein, um die Ursache von Programmfehlern zu überprüfen und so die Stabilität und Zuverlässigkeit des Programms zu verbessern.

echo $sql;

Wenn im obigen Code ein Fehler in der SQL-Anweisung auftritt, kann $sql ausgegeben werden, um die Richtigkeit der SQL-Anweisung zu überprüfen.

Zusammenfassung

Es gibt viele Möglichkeiten, den Fehler beim Aufruf einer Mitgliedsfunktion fetch() zu vermeiden. Zu den häufigsten Methoden gehört die Bestätigung, ob die SQL-Anweisung korrekt ist, die Bestätigung, ob die Datenbankverbindung erfolgreich ist, die Bestätigung, ob das PDO-Objekt korrekt ist, und die Bestätigung, ob die SQL-Anweisung korrekt ist. Bestätigen, ob die Abfrage Ergebnisse hat usw. Beim täglichen Codieren sollten Sie korrekte Entwicklungsspezifikationen befolgen, SQL-Anweisungen strikt schreiben und Debugging- und Fehlerbehandlungsmechanismen hinzufügen, um Fehler zu vermeiden. Auf diese Weise können hochwertige Webanwendungen entwickelt werden.

Das obige ist der detaillierte Inhalt vonLösung für PHP Schwerwiegender Fehler: Aufruf einer Mitgliedsfunktion fetch(). 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