Detección de errores generados por $ wpdb-> get_results ()

9

¿Cómo detecto errores cuando uso $ wpdb-> get_results ()?

Por ejemplo:

$result = $wpdb->get_results("SELECT * FROM this is not a valid query");

El código anterior no genera ninguna excepción o error; simplemente establece $ result en una matriz vacía. ¿Cómo detectamos de manera confiable los errores generados por get_results ()?

rinogo
fuente

Respuestas:

7

Hay una variable de clase que almacena la última cadena de error: $ wpdb-> last_error. Por el aspecto de la forma en que se codifica $ wpdb, si la consulta tiene éxito, $ wpdb-> last_error será una cadena vacía, si falla, será la cadena de error devuelta por MySQL. Entonces algo como esto haría el truco.

$result = $wpdb->get_results("SELECT * FROM this is not a valid query");
if ($wpdb->last_error) {
  echo 'You done bad! ' . $wpdb->last_error;
}
bytesnz
fuente
Suena razonable: no puedo analizar esto en este momento, pero si esto funciona, ¡sería útil en el futuro! ¡Gracias! :)
rinogo
Volví a esto en una tarea posterior, ¡funciona muy bien! He puesto este código en una función; Actualicé tu respuesta; ¡Espero que no te moleste!
rinogo
1

Lo mejor que puedo encontrar es:

$wpdb->show_errors();
$result = $wpdb->get_results("SELECT * FROM this is not a valid query");
$wpdb->hide_errors();

Desafortunadamente, eso apenas resuelve el problema. Quiero manejar el error mediante programación, no solo repetirlo en la secuencia de salida.

rinogo
fuente
Supongo que siempre podría hacer algo desagradable al interceptar el búfer de salida ...: /
rinogo