O erro fatal não está no MySQL; a notificação de índice ausente é um aviso de gravidade relativamente baixa.
O fatal erro está em seu código PHP, devido às três condições a seguir:
- mysqli relata muito de avisos, mesmo para condições relativamente inofensivas.
- Você está lançando
mysqli_sql_exceptionpara todos os erros e avisos devido ao seumysqli_report(MYSQLI_REPORT_ALL);linha. - Seu código PHP não está capturando essa exceção (ou seja, não está em um
try{}bloco com umcatch(){}apropriado block) e exceções não capturadas são fatais.
Você não pode fazer muito sobre o primeiro, como mencionado na outra resposta. Então, você pode corrigi-lo alterando seu
mysqli_report(...) configuração para MYSQLI_REPORT_STRICT ou MYSQLI_REPORT_OFF , ou qualquer outra coisa além de MYSQLI_REPORT_ALL . (edit:o comentário do w3d abaixo dá uma boa explicação do porquê e sugere que você pode usar
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT) como uma boa alternativa) Para práticas recomendadas, e em combinação com isso, você deve corrigi-lo corretamente usando
try{} e catch(){} apropriadamente em seu código.