Dos problemas MÁS GRANDES con su código y su "solución":
- Tienes
@
Operador por todos lados. Para lo cual tienes -1 voto a tu pregunta.@
operador es el mal mismo. TI es responsable de la página en blanco que ve. - Sin embargo, el remedio que eligió empeoró las cosas. Esto de "O morir" no es un canto mágico para resolver cualquier problema de informe de errores. Y si se usa incorrectamente causará errores como uno que tienes. Para el que tienes
1
en el mensaje de error.
En primer lugar, su inclusión está bien, así que déjela en paz.
Para obtener un error de mysqli, siga estas instrucciones:
En lugar de agregar "o morir" al azar, necesita una solución de informe de errores más sólida y útil.
Si está utilizando mysqli_query() en todo el código de la aplicación sin encapsularlo en alguna clase auxiliar, trigger_error()
es una buena manera de generar un error de PHP, ya que también le indicará el archivo y el número de línea donde ocurrió el error
$res = mysqli_query($mysqli,$query) or trigger_error(mysqli_error($mysqli)."[$query]");
en todos sus scripts
y desde entonces se le notificará el motivo por el cual no se creó el objeto. (Si tiene curiosidad sobre esto or
sintaxis, Lo he explicado aquí
- también explica por qué tienes (1)
en el mensaje de error)
Sin embargo , si está encapsulando su consulta en alguna clase, el archivo y la línea del error de activación serán bastante inútiles, ya que apuntarán a la llamada en sí, no al código de la aplicación que causó cierto problema. Entonces, cuando se ejecutan comandos mysqli encapsulados, se debe usar otra forma:
$result = $mysqli->query($sql);
if (!$result) {
throw new Exception($mysqli->error." [$query]");
}
como excepción le proporcionará un rastreo de pila , que lo llevará al lugar desde donde se llamó una consulta errónea.
Tenga en cuenta que debe poder ver los errores de PHP en general. En un sitio en vivo, debe consultar los registros de errores, por lo que la configuración debe ser
error_reporting(E_ALL);
ini_set('display_errors',0);
ini_set('log_errors',1);
mientras está en un servidor de desarrollo local, está bien cometer errores en la pantalla:
error_reporting(E_ALL);
ini_set('display_errors',1);
y, por supuesto, nunca debe usar el operador de supresión de errores (@) delante de sus declaraciones.