Vorbereitete MySQLi-Anweisungen: Erläuterung zur Fehlerbehandlung
Bei der Verwendung vorbereiteter Anweisungen mit MySQLi kann es unklar sein, wie die Fehlerberichterstattung am besten gehandhabt werden soll. Ziel dieses Artikels ist es, den richtigen Ansatz zur Fehlerbehandlung zu verdeutlichen.
Rückgabewert von Prepare() vs. Execute()
Der Rückgabewert von Prepare() gibt nur an, ob Die Vorbereitung der SQL-Anweisung war erfolgreich. Ausführungsfehler werden nicht erkannt. Daher ist es notwendig, auch den Rückgabewert vonexecute() zu überprüfen.
Beispiel:
if ($stmt_test->prepare("INSERT INTO testtable VALUES (23,44,56)")) { if ($stmt_test->execute()) { echo "Statement executed successfully."; } else { echo("Execution failed: " . $stmt_test->error . "<br>"); } $stmt_test->close(); } else { echo("Statement preparation failed: " . $stmt_test->error . "<br>"); }
Zusätzliche Fehlerprüfung
Während der Rückgabewert vonexecute() die meisten Fehler behandelt, empfiehlt es sich auch, die errno-Eigenschaft der Anweisung nach der Ausführung zu überprüfen. Dadurch wird sichergestellt, dass eventuell während der Ausführung aufgetretene Fehler abgefangen werden.
Beispiel:
if ($stmt_test->execute()) { if (!$stmt_test->errno) { echo "Statement executed successfully."; } else { echo("Additional error occurred: " . $stmt_test->error . "<br>"); } $stmt_test->close(); } else { echo("Execution failed: " . $stmt_test->error . "<br>"); }
Vereinfachte Fehlerberichterstattung
Um die Fehlerberichterstattung erheblich zu vereinfachen, können Sie auch die Funktion mysqli_report() verwenden. Durch Setzen der Flags MYSQLI_REPORT_ERROR und MYSQLI_REPORT_STRICT werden alle MySQLi-Fehler als PHP-Ausnahmen gemeldet.
Beispiel:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); $stmt = $mysqli->prepare("INSERT INTO testtable VALUES (?,?,?)"); $stmt->bind_param('iii', $x, $y, $z); $stmt->execute();
Diese Methode macht eine explizite Fehlerprüfung überflüssig in Ihrem Code.
Das obige ist der detaillierte Inhalt vonWie behandelt man Fehler in von MySQLi vorbereiteten Anweisungen richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!