Wenn Sie mit einer PDO-Anweisung konfrontiert werden, die „false“ zurückgibt und Sie bezüglich var. im Unklaren lässt Denken Sie beim Dumping an diese beiden goldenen Regeln:
Konfigurieren Sie PHP und PDO, um MySQL-Fehlermeldungen anzuzeigen. Fügen Sie Ihrem Verbindungscode die folgende Zeile hinzu:
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
Oder, noch besser, fügen Sie diesen Parameter als Verbindungsoption ein. Auf diese Weise werden Datenbankfehler in PDO-Ausnahmen übersetzt, die sich wie normale PHP-Fehler verhalten.
Ersetzen Sie PHP-Variablen in SQL-Abfrage mit Fragezeichen. Führen Sie dann die Abfrage mit einer vorbereiteten Anweisung aus:
$sql = $dbh->prepare('INSERT INTO users(full_name, e_mail, username, password) VALUES (?, ?, ?, ?)'); $result = $sql->execute(array($_GET['fullname'], $_GET['email'], $_GET['username'], $password_hash));
Vorbereitete Anweisungen schützen vor Syntaxfehlern und stellen sicher, dass Eingabedaten ordnungsgemäß verarbeitet werden.
PDO-Ausnahmen liefern detaillierte Fehlermeldungen, die das Problem lokalisieren und MySQL-Fehlermeldungen aufschlüsseln Kategorien:
Debug-Techniken können Ihnen dabei helfen, die ersten beiden Kategorien zu identifizieren. Allerdings sind Ausführungsfehler die häufigsten Übeltäter, und PDO-Ausnahmen machen das Verständnis dieser Fehler zum Kinderspiel.
Denken Sie daran, den Fehlermeldungen zu vertrauen, da sie das Problem genau lokalisieren. Wenn angezeigt wird, dass eine Tabelle nicht existiert, überprüfen Sie noch einmal Ihre Rechtschreibung und Datenbankverbindung. Wenn ein Syntaxfehler hervorgehoben wird, überprüfen Sie die SQL-Anweisung vor dem genannten Fehler.
Wenn der Code erfolgreich ausgeführt wird, aber keine Ergebnisse beobachtet werden, wird er bedeutet wahrscheinlich, dass die Daten nicht den Auswahlkriterien entsprechen. Befolgen Sie die Anweisungen im verlinkten Tutorial, um das Problem zu lokalisieren und zu beheben.
Das obige ist der detaillierte Inhalt vonWarum schlägt meine PDO-Anweisung stillschweigend fehl und wie kann ich sie debuggen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!