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