En este post te mostraré cómo depurar errores de MySQL al usar PHP con MySQLi. Es decir, mostrar los errores o advertencias, ya que por defecto MySQLi va a ignorar los errores y no nos avisará si tenemos un error con nuestras consultas SQL.
Por ello es que hoy te mostraré cómo hacer que mysqli muestre los errores y advertencias SQL al insertar, actualizar o llamar a procedimientos almacenados.
Depurar errores de SQL y MySQLi con mysqli_report
Esto es muy fácil de hacer. Simplemente antes de hacer tu conexión de PHP a MySQLi, invoca a la función mysqli_report
pasándole una bandera. Yo te recomiendo la bandera MYSQLI_REPORT_ERROR
.
Por ejemplo, aquí la invoco así antes de hacer una conexión:
<?php
mysqli_report(MYSQLI_REPORT_ERROR); // <-- Justo aquí
$this->conexion = new mysqli($this->servidor,$this->usuario,$this->contrasena,$this->basedatos);
$this->conexion->set_charset("utf8")
Lo importante es la línea 2, pues de ese modo habilitamos los errores de MySQLi para que nos indique si hay algún problema. Por ejemplo, a mí me reportó el siguiente error:
Warning: mysqli::query(): (42S02/1146): Table ‘tabla’ doesn’t exist in C:\xampp\htdocs\archivo.php</b> on line 103
A partir de eso ya podemos investigar más a fondo los errores que se generan en MySQL. Encuentras más información sobre la función aquí expuesta en el sitio oficial de php.