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

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

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.


Je suppose que je pourrais toujours faire quelque chose de méchant en interceptant le tampon de sortie ...: /
rinogo
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.