Detectando errores generados por $wpdb->get_results()

18 abr 2014, 00:54:09
Vistas: 16.1K
Votos: 14

¿Cómo detecto errores al usar $wpdb->get_results()?

Por ejemplo:

$result = $wpdb->get_results("SELECT * FROM esto no es una consulta válida");

El código anterior no genera ninguna excepción o error; simplemente establece $result como un array vacío. ¿Cómo podemos detectar de manera confiable los errores generados por get_results()?

0
Todas las respuestas a la pregunta 2
2
13

Existe una variable de clase que almacena el último mensaje de error - $wpdb->last_error. Según parece por la forma en que está codificado $wpdb, si la consulta tiene éxito, $wpdb->last_error será una cadena vacía, si falla, será el mensaje de error devuelto por MySQL. Así que algo como esto serviría.

$result = $wpdb->get_results("SELECT * FROM this is not a valid query");
if ($wpdb->last_error) {
  echo '¡Lo has hecho mal! ' . $wpdb->last_error;
}
23 abr 2015 09:31:31
Comentarios

Suena razonable. No puedo revisarlo ahora mismo, pero si funciona, ¡será muy útil en el futuro! ¡Gracias! :)

rinogo rinogo
23 abr 2015 19:49:18

Volví a esto en una tarea posterior: ¡funciona genial! He puesto este código en una función; actualicé tu respuesta. ¡Espero que no te moleste!

rinogo rinogo
6 nov 2017 20:53:38
1

Lo mejor que puedo encontrar es:

$wpdb->show_errors();
$result = $wpdb->get_results("SELECT * FROM esto no es una consulta válida");
$wpdb->hide_errors();

Desafortunadamente, eso apenas resuelve el problema. Quiero manejar el error programáticamente, no solo mostrarlo en el flujo de salida.

18 abr 2014 01:00:13
Comentarios

Supongo que siempre podría hacer algo feo interceptando el buffer de salida... :/

rinogo rinogo
18 abr 2014 01:01:00