Heim > Datenbank > MySQL-Tutorial > mysqli oder sterben: Sollten wir Ausnahmen anstelle einer sofortigen Kündigung akzeptieren?

mysqli oder sterben: Sollten wir Ausnahmen anstelle einer sofortigen Kündigung akzeptieren?

Susan Sarandon
Freigeben: 2024-12-16 14:36:12
Original
502 Leute haben es durchsucht

mysqli or die: Should We Embrace Exceptions Instead of Immediate Termination?

mysqli oder die: Ist der Tod notwendig?

Bei der Verwendung von MySQL-Abfragen in PHP greift man häufig auf das Konstrukt mysqli oder die zurück, um potenzielle Fehler zu behandeln. Ist es jedoch immer notwendig, die Skriptausführung zu beenden, oder gibt es Alternativen?

Warum die() eine schlechte Idee ist

Im Gegensatz zu ihrem Namen ist die Funktion die() nicht ideal Ansatz zur Fehlerbehandlung in diesem Zusammenhang. Hier ist der Grund:

  • Es legt Systeminterna offen und hilft Angreifern möglicherweise.
  • Die Fehlermeldung kann technisch nicht versierte Benutzer verwirren.
  • Das Skript wird abrupt abgebrochen und verlassen Benutzer gestrandet.
  • Es verhindert eine ordnungsgemäße Fehlerbehandlung durch Ausnahmebehandlung.
  • Es bietet Keine Ahnung, wo der Fehler liegt, was das Debuggen erschwert.

Alternativen zu die()

Anstelle von die() wird empfohlen, MySQLi so zu konfigurieren, dass bei Fehlern Ausnahmen ausgelöst werden mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT). Dadurch können Sie MySQLi-Befehle ohne zusätzlichen Fehlerbehandlungscode schreiben, wie zum Beispiel:

1

$result = mysqli_query($link, $sql);

Nach dem Login kopieren

Ausnahmen behandeln

Im Fehlerfall wird eine Ausnahme ausgelöst. Sie können diese Ausnahme ordnungsgemäß abfangen und behandeln, indem Sie eine benutzerdefinierte Fehlerreaktion bereitstellen oder Benutzer entsprechend umleiten. Zum Beispiel:

1

2

3

4

5

6

7

try {

  $result = mysqli_query($link, $sql);

} catch (mysqli_sql_exception $e) {

  // Handle the error here

  log_error($e->getMessage());

  redirect_to_error_page();

}

Nach dem Login kopieren

Fehler protokollieren

Auf Wunsch können Sie Fehler auch zur Prüfung oder weiteren Analyse in einer separaten Tabelle protokollieren. Zu diesem Zweck können Sie eine benutzerdefinierte Funktion erstellen, die diese Aufgabe erledigt:

1

2

3

4

5

function log_error($query, $error) {

  // Insert error log into a table

  $sql_insert_error = "INSERT INTO error_log (query, error) VALUES ('{$query}', '{$error}')";

  mysqli_query($link, $sql_insert_error);

}

Nach dem Login kopieren

Fazit

Die Verwendung von mysqli oder die mag praktisch erscheinen, wird jedoch aufgrund ihrer Nachteile nicht empfohlen. Konfigurieren Sie MySQLi stattdessen so, dass es Ausnahmen auslöst und Fehler ordnungsgemäß behandelt. Dadurch stellen Sie eine belastbare Anwendung sicher, die auch bei Fehlern ein besseres Benutzererlebnis bietet.

Das obige ist der detaillierte Inhalt vonmysqli oder sterben: Sollten wir Ausnahmen anstelle einer sofortigen Kündigung akzeptieren?. 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