Cum să detectezi erorile generate de $wpdb->get_results()

18 apr. 2014, 00:54:09
Vizualizări: 16.1K
Voturi: 14

Cum pot detecta erorile atunci când folosesc $wpdb->get_results()?

De exemplu:

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

Codul anterior nu generează nicio excepție sau eroare; pur și simplu setează $result la un array gol. Cum putem detecta în mod fiabil erorile generate de get_results()?

0
Toate răspunsurile la întrebare 2
2
13

Există o variabilă de clasă care stochează ultimul mesaj de eroare - $wpdb->last_error. Judecând după modul în care este codificat $wpdb, dacă interogarea reușește, $wpdb->last_error va fi un șir gol, iar dacă eșuează, va fi mesajul de eroare returnat de MySQL. Deci, ceva de genul acesta ar funcționa.

$result = $wpdb->get_results("SELECT * FROM this is not a valid query");
if ($wpdb->last_error) {
  echo 'Ai făcut ceva greșit! ' . $wpdb->last_error;
}
23 apr. 2015 09:31:31
Comentarii

Sună rezonabil - nu pot să mă uit acum la asta, dar dacă funcționează, ar fi foarte util pe viitor! Mulțumesc! :)

rinogo rinogo
23 apr. 2015 19:49:18

Am revenit la asta într-o misiune ulterioară - funcționează excelent! Am pus acest cod într-o funcție; am actualizat răspunsul tău; sper că nu te superi!

rinogo rinogo
6 nov. 2017 20:53:38
1

Cel mai bun lucru pe care l-am găsit este:

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

Din păcate, asta abia rezolvă problema. Vreau să gestionez eroarea programatic, nu doar să o afișez în fluxul de ieșire.

18 apr. 2014 01:00:13
Comentarii

Presupun că aș putea face întotdeauna ceva neplăcut prin interceptarea buffer-ului de ieșire... :/

rinogo rinogo
18 apr. 2014 01:01:00