sql >> Base de Datos >  >> RDS >> Mysql

mysqli o morir, tiene que morir?

¿Tiene que morir?

Todo lo contrario, no debería or die() nunca.
PHP es un lenguaje de mala herencia. Muy mala herencia. Y or die() con un mensaje de error que es uno de los peores rudimentos:

  • Die lanza un mensaje de error, revelando algunas partes internas del sistema a un atacante potencial
  • confunde a los usuarios inocentes con mensajes extraños y no les deja una interfaz con la que trabajar, por lo que es probable que abandonen.
  • mata la secuencia de comandos en el medio, por lo que puede causar que se muestre un diseño rasgado (o ningún diseño) (es decir, una representación incompleta de la página que solicitó el usuario)
  • matar el guión de forma irrecuperable. Mientras que la excepción lanzada puede ser capturada y manejada con gracia
  • die() no le da ninguna pista del lugar donde ocurrió el error . Y en una aplicación relativamente grande será bastante complicado encontrarlo.

Entonces, nunca uses die() con errores de MySQL, incluso para la depuración temporal :hay formas mejores.

En lugar de verificar manualmente el error, simplemente configure mysqli para generar excepciones en caso de error, agregando la siguiente línea a su código de conexión

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

y después de eso, simplemente escriba cada comando mysqli tal como está, sin ningún or die o cualquier otra cosa:

$result = mysqli_query($link, $sql);

Este código generará una excepción en caso de error y, por lo tanto, siempre estará informado de cada problema sin una sola línea de código adicional.

En mi artículo sobre Informe de errores de PHP .