Den fatale fejl er ikke i MySQL; underretningen om manglende indeks er en advarsel med relativt lav sværhedsgrad.
Den dødelige fejl er i din PHP-kode på grund af følgende tre forhold:
- mysqli rapporterer en masse af advarsler, selv for relativt harmløse forhold.
- Du kaster
mysqli_sql_exception
for alle fejl og advarsler på grund af dinmysqli_report(MYSQLI_REPORT_ALL);
linje. - Din PHP-kode fanger ikke denne undtagelse (dvs. den er ikke i et
try{}
blok med en passendecatch(){}
blok), og ufangede undtagelser er fatale.
Du kan ikke gøre meget ved den første, som nævnt i det andet svar. Så du kan rette det enten ved at ændre din mysqli_report(...)
indstilling til MYSQLI_REPORT_STRICT
eller MYSQLI_REPORT_OFF
, eller faktisk noget andet end MYSQLI_REPORT_ALL
.
(edit:w3d's kommentar nedenfor giver en god forklaring på hvorfor, og foreslår, at du kan bruge mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT)
som et godt alternativ)
For bedste praksis, og i kombination med dette, bør du rette det korrekt ved at bruge try{}
og catch(){}
passende i din kode.