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_exception
dla 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.