Rilevare errori generati da $wpdb->get_results()

18 apr 2014, 00:54:09
Visualizzazioni: 16.1K
Voti: 14

Come posso rilevare gli errori quando utilizzo $wpdb->get_results()?

Ad esempio:

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

Il codice precedente non genera alcuna eccezione o errore; imposta semplicemente $result come un array vuoto. Come possiamo rilevare in modo affidabile gli errori generati da get_results()?

0
Tutte le risposte alla domanda 2
2
13

Esiste una variabile di classe che memorizza l'ultima stringa di errore - $wpdb->last_error. Dal modo in cui $wpdb è codificato, se la query ha successo, $wpdb->last_error sarà una stringa vuota, se fallisce, conterrà la stringa di errore restituita da MySQL. Quindi qualcosa come questo farebbe al caso nostro.

$result = $wpdb->get_results("SELECT * FROM this is not a valid query");
if ($wpdb->last_error) {
  echo 'Hai fatto un errore! ' . $wpdb->last_error;
}
23 apr 2015 09:31:31
Commenti

Sembra ragionevole - non posso approfondire ora, ma se funziona, sarebbe utile in futuro! Grazie! :)

rinogo rinogo
23 apr 2015 19:49:18

Sono tornato su questo in un compito successivo - funziona alla grande! Ho inserito questo codice in una funzione; ho aggiornato la tua risposta; spero non ti dispiaccia!

rinogo rinogo
6 nov 2017 20:53:38
1

Il meglio che ho trovato è:

$wpdb->show_errors();
$result = $wpdb->get_results("SELECT * FROM questa non è una query valida");
$wpdb->hide_errors();

Sfortunatamente, questo non risolve il problema. Voglio gestire l'errore a livello di programmazione, non solo visualizzarlo nel flusso di output.

18 apr 2014 01:00:13
Commenti

Immagino che potrei sempre fare qualcosa di brutto intercettando il buffer di output... :/

rinogo rinogo
18 apr 2014 01:01:00