De fatale fout zit niet in MySQL; de ontbrekende indexmelding is een waarschuwing met een relatief lage ernst.
De fatale fout zit in uw PHP-code, vanwege de volgende drie voorwaarden:
- mysqli meldt veel waarschuwingen, zelfs voor relatief ongevaarlijke omstandigheden.
- Je gooit
mysqli_sql_exceptionvoor alle fouten en waarschuwingen vanwege uwmysqli_report(MYSQLI_REPORT_ALL);regel. - Je PHP-code vangt die uitzondering niet op (d.w.z. het zit niet in een
try{}blok met een geschiktecatch(){}block), en niet-afgevangen uitzonderingen zijn fataal.
Je kunt niet veel doen aan de eerste, zoals vermeld in het andere antwoord. U kunt het dus oplossen door uw mysqli_report(...) . te wijzigen instelling op MYSQLI_REPORT_STRICT of MYSQLI_REPORT_OFF , of iets anders dan MYSQLI_REPORT_ALL .
(edit:de opmerking van w3d hieronder geeft een goede uitleg waarom, en suggereert dat je mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT) zou kunnen gebruiken als een goed alternatief)
Voor best practices, en in combinatie hiermee, moet je het correct oplossen door try{} . te gebruiken en catch(){} passend binnen uw code.