Błąd krytyczny nie występuje w MySQL; powiadomienie o braku indeksu jest ostrzeżeniem o stosunkowo niskiej wadze.
śmiertelny w twoim kodzie PHP jest błąd, z powodu następujących trzech warunków:
- mysqli zgłasza dużo ostrzeżeń, nawet w przypadku stosunkowo nieszkodliwych warunków.
- Wyrzucasz
mysqli_sql_exceptiondla wszystkich błędów i ostrzeżenia z powodu Twojegomysqli_report(MYSQLI_REPORT_ALL);linia. - Twój kod PHP nie przechwytuje tego wyjątku (tzn. nie znajduje się w
try{}blok z odpowiednimcatch(){}bloku), a niewyłapane wyjątki są fatalne.
Nie możesz wiele zrobić z pierwszym, jak wspomniano w drugiej odpowiedzi. Możesz to naprawić, zmieniając swój mysqli_report(...) ustawienie na MYSQLI_REPORT_STRICT lub MYSQLI_REPORT_OFF lub cokolwiek innego niż MYSQLI_REPORT_ALL .
(edycja:komentarz w3d poniżej podaje dobre wyjaśnienie dlaczego i sugeruje, że możesz użyć mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT) jako dobra alternatywa)
Aby uzyskać najlepsze praktyki i w połączeniu z tym, powinieneś to naprawić poprawnie, używając try{} i catch(){} odpowiednio w kodzie.