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 ()?

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;
}

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.


Supongo que siempre podría hacer algo desagradable al interceptar el búfer de salida ...: /
rinogo
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.