L'errore fatale non è in MySQL; la notifica dell'indice mancante è un avviso di gravità relativamente bassa.
Il fatale l'errore è nel tuo codice PHP, a causa delle seguenti tre condizioni:
- mysqli segnala un molto di avvertenze, anche per condizioni relativamente innocue.
- Stai lanciando
mysqli_sql_exception
per tutti gli errori e avvisi dovuti al tuomysqli_report(MYSQLI_REPORT_ALL);
linea. - Il tuo codice PHP non sta rilevando quell'eccezione (cioè non è in un
try{}
blocco con uncatch(){}
appropriato block) e le eccezioni non rilevate sono fatali.
Non puoi fare molto per il primo, come menzionato nell'altra risposta. Quindi, puoi risolverlo cambiando il tuo mysqli_report(...)
impostazione su MYSQLI_REPORT_STRICT
o MYSQLI_REPORT_OFF
, o in effetti qualcosa di diverso da MYSQLI_REPORT_ALL
.
(modifica:il commento di w3d di seguito fornisce una buona spiegazione del perché e suggerisce che potresti usare mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT)
come una buona alternativa)
Per le migliori pratiche, e in combinazione con questo, dovresti risolverlo correttamente utilizzando try{}
e catch(){}
correttamente all'interno del tuo codice.