Heim > Backend-Entwicklung > PHP-Tutorial > Wie behandelt man Fehler in von MySQLi vorbereiteten Anweisungen richtig?

Wie behandelt man Fehler in von MySQLi vorbereiteten Anweisungen richtig?

Linda Hamilton
Freigeben: 2024-12-12 11:23:09
Original
562 Leute haben es durchsucht

How to Properly Handle Errors in MySQLi Prepared Statements?

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>");
}
Nach dem Login kopieren

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>");
}
Nach dem Login kopieren

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();
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage