Фаталната грешка не е в MySQL; липсващото известие за индекс е предупреждение с относително ниска сериозност.
Фаталният грешка във вашия PHP код поради следните три условия:
- mysqli отчита много на предупреждения, дори за относително безвредни условия.
- Изхвърляте
mysqli_sql_exception
за всички грешки и предупреждения поради вашияmysqli_report(MYSQLI_REPORT_ALL);
линия. - Вашият PHP код не улавя това изключение (т.е. не е в
try{}
блок с подходящcatch(){}
block), а неуловените изключения са фатални.
Не можете да направите много за първия, както е споменато в другия отговор. Така че можете да го поправите или като промените вашия mysqli_report(...)
настройка на MYSQLI_REPORT_STRICT
или MYSQLI_REPORT_OFF
, или наистина нещо различно от MYSQLI_REPORT_ALL
.
(редактиране:коментарът на w3d по-долу дава добро обяснение защо и предлага да използвате mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT)
като добра алтернатива)
За най-добри практики и в комбинация с това, трябва да го коригирате правилно, като използвате try{}
и catch(){}
подходящо във вашия код.