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

Schwerwiegender Fehler:Nicht abgefangene Ausnahme 'mysqli_sql_exception' mit der Meldung 'Kein Index in Abfrage/vorbereiteter Anweisung verwendet'

Der schwerwiegende Fehler liegt nicht in MySQL; Die fehlende Indexbenachrichtigung ist eine Warnung mit relativ niedrigem Schweregrad.

Die tödliche Fehler in Ihrem PHP-Code, aufgrund der folgenden drei Bedingungen:

  • mysqli meldet viel von Warnungen, auch für relativ harmlose Bedingungen.
  • Sie werfen mysqli_sql_exception für alle Fehler und Warnungen aufgrund Ihres mysqli_report(MYSQLI_REPORT_ALL); Linie.
  • Ihr PHP-Code fängt diese Ausnahme nicht ab (d. h. er befindet sich nicht in einem try{} mit einem entsprechenden catch(){} blockieren Block), und nicht abgefangene Ausnahmen sind fatal.

Sie können nicht viel gegen die erste tun, wie in der anderen Antwort erwähnt. Sie können es also entweder beheben, indem Sie Ihren mysqli_report(...) ändern Einstellung auf MYSQLI_REPORT_STRICT oder MYSQLI_REPORT_OFF , oder tatsächlich etwas anderes als MYSQLI_REPORT_ALL .

(Bearbeiten:Der Kommentar von w3d unten gibt eine gute Erklärung dafür und schlägt vor, dass Sie mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT) verwenden könnten als gute Alternative)

Für Best Practices und in Kombination damit sollten Sie es richtig beheben, indem Sie try{} verwenden und catch(){} entsprechend in Ihrem Code.