Detectando erros gerados por $ wpdb-> get_results ()


9

Como detecto erros ao usar $ wpdb-> get_results ()?

Por exemplo:

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

O código anterior não gera exceções ou erros; simplesmente define $ result para uma matriz vazia. Como detectamos de maneira confiável os erros gerados por get_results ()?

Respostas:


7

Há uma variável de classe que armazena a última string de erro - $ wpdb-> last_error. Pela aparência da maneira como $ wpdb é codificado, se a consulta for bem-sucedida, $ wpdb-> last_error será uma string vazia, se falhar, será a string de erro retornada pelo MySQL. Então, algo assim faria o truque.

$result = $wpdb->get_results("SELECT * FROM this is not a valid query");
if ($wpdb->last_error) {
  echo 'You done bad! ' . $wpdb->last_error;
}

Parece razoável - não posso investigar isso agora, mas, se funcionar, será útil no futuro! Obrigado! :)
rinogo

Voltei a isso em uma tarefa posterior - funciona muito bem! Eu coloquei esse código em uma função; Eu atualizei sua resposta; Espero que você não se importe!
Rinogo 6/11

1

O melhor que posso encontrar é:

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

Infelizmente, isso dificilmente resolve o problema. Quero manipular o erro programaticamente, não apenas repeti-lo no fluxo de saída.


Acho que eu poderia sempre fazer algo desagradável com interceptar o buffer de saída ...: /
rinogo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.