Détection des erreurs générées par $ wpdb-> get_results ()

9

Comment détecter les erreurs lors de l'utilisation de $ wpdb-> get_results ()?

Par exemple:

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

Le code précédent ne génère aucune exception ni erreur; il définit simplement $ result dans un tableau vide. Comment détecter de manière fiable les erreurs générées par get_results ()?

rinogo
la source

Réponses:

7

Il existe une variable de classe qui stocke la dernière chaîne d'erreur - $ wpdb-> last_error. D'après l'apparence de la façon dont $ wpdb est codé, si la requête réussit, $ wpdb-> last_error sera une chaîne vide, si elle échoue, ce sera la chaîne d'erreur retournée par MySQL. Donc, quelque chose comme ça ferait l'affaire.

$result = $wpdb->get_results("SELECT * FROM this is not a valid query");
if ($wpdb->last_error) {
  echo 'You done bad! ' . $wpdb->last_error;
}
bytesnz
la source
Cela semble raisonnable - je ne peux pas me pencher là-dessus en ce moment, mais si cela fonctionne, ce serait utile à l'avenir! Merci! :)
rinogo
J'y suis revenu lors d'une mission ultérieure - fonctionne très bien! J'ai mis ce code dans une fonction; J'ai mis à jour votre réponse; J'espère que ça ne vous dérange pas!
rinogo
1

Le mieux que je puisse trouver est:

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

Malheureusement, cela ne résout guère le problème. Je veux gérer l'erreur par programme, pas seulement l'écho dans le flux de sortie.

rinogo
la source
Je suppose que je pourrais toujours faire quelque chose de méchant en interceptant le tampon de sortie ...: /
rinogo