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