Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysqli oder sterben, muss es sterben?

Muss es sterben

Ganz im Gegenteil, es sollte nicht or die() werden je.
PHP ist eine Sprache schlechter Vererbung. Sehr schlechte Vererbung. Und or die() wobei eine Fehlermeldung eines der schlimmsten Elemente ist:

  • die wirft eine Fehlermeldung aus, die einem potenziellen Angreifer einige Systeminterna offenbart
  • Es verwirrt unschuldige Benutzer mit seltsamen Nachrichten und lässt ihnen keine Schnittstelle, mit der sie arbeiten können, sodass sie wahrscheinlich einfach abbrechen würden.
  • Es beendet das Skript in der Mitte, sodass möglicherweise ein zerrissenes Design (oder überhaupt kein Design) angezeigt wird (d. h. eine unvollständige Darstellung der vom Benutzer angeforderten Seite)
  • das Skript unwiederbringlich beenden. Während eine ausgelöste Ausnahme abgefangen und ordnungsgemäß behandelt werden kann
  • die() gibt Ihnen keinen Hinweis auf die Stelle, an der der Fehler aufgetreten ist . Und in einer relativ großen Anwendung wird es ziemlich schwierig sein, sie zu finden.

Verwenden Sie also niemals die() mit MySQL-Fehlern, auch für das temporäre Debugging :Es gibt bessere Wege.

Anstatt manuell nach dem Fehler zu suchen, konfigurieren Sie mysqli einfach so, dass es bei Fehlern Ausnahmen auslöst, indem Sie die folgende Zeile zu Ihrem Verbindungscode hinzufügen

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

und schreiben Sie danach einfach jeden mysqli-Befehl so, wie er ist, ohne or die oder etwas anderes:

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

Dieser Code löst im Fehlerfall eine Ausnahme aus und Sie werden somit immer ohne eine einzige Zeile zusätzlichen Codes über jedes Problem informiert.

Eine ausführlichere Erklärung, wie Sie Ihre Fehlerberichterstattungsproduktion bereit, einheitlich und insgesamt sinnvoll machen und gleichzeitig Ihren Code viel sauberer machen, finden Sie in meinem Artikel zu PHP-Fehlermeldung .