El error fatal no está en MySQL; la notificación de índice faltante es una advertencia de gravedad relativamente baja.
El fatal el error está en su código PHP, debido a las siguientes tres condiciones:
- mysqli informa mucho mucho de advertencias, incluso para condiciones relativamente inofensivas.
- Estás lanzando
mysqli_sql_exception
para todos los errores y advertencias debido a sumysqli_report(MYSQLI_REPORT_ALL);
línea. - Tu código PHP no detecta esa excepción (es decir, no está en un
try{}
bloque con uncatch(){}
apropiado block), y las excepciones no detectadas son fatales.
No puede hacer mucho sobre el primero, como se menciona en la otra respuesta. Entonces, puede solucionarlo cambiando su mysqli_report(...)
configurando en MYSQLI_REPORT_STRICT
o MYSQLI_REPORT_OFF
, o de hecho cualquier otra cosa que no sea MYSQLI_REPORT_ALL
.
(editar:el comentario de w3d a continuación brinda una buena explicación de por qué y sugiere que podría usar mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT)
como una buena alternativa)
Para las mejores prácticas, y en combinación con esto, debe corregirlo correctamente usando try{}
y catch(){}
apropiadamente dentro de su código.