Mendeteksi kesalahan yang dihasilkan oleh $ wpdb-> get_results ()

9

Bagaimana cara mendeteksi kesalahan saat menggunakan $ wpdb-> get_results ()?

Sebagai contoh:

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

Kode sebelumnya tidak menghasilkan pengecualian atau kesalahan apa pun; itu hanya menetapkan $ hasil ke array kosong. Bagaimana kami mendeteksi kesalahan yang dihasilkan oleh get_result () dengan andal?

rinogo
sumber

Jawaban:

7

Ada variabel kelas yang menyimpan string kesalahan terakhir - $ wpdb-> last_error. Dengan cara $ wpdb dikodekan, jika kueri berhasil, $ wpdb-> last_error akan menjadi string kosong, jika gagal, itu akan menjadi string kesalahan yang dikembalikan oleh MySQL. Jadi sesuatu seperti ini akan berhasil.

$result = $wpdb->get_results("SELECT * FROM this is not a valid query");
if ($wpdb->last_error) {
  echo 'You done bad! ' . $wpdb->last_error;
}
bytesnz
sumber
Kedengarannya masuk akal - saya tidak bisa melihat ini sekarang, tetapi jika ini berhasil, itu akan berguna di masa depan! Terima kasih! :)
rinogo
Kembali ke tugas ini nanti - berhasil! Saya telah memasukkan kode ini ke suatu fungsi; Saya memperbarui jawaban Anda; Saya harap kamu tidak keberatan!
rinogo
1

Yang terbaik yang bisa saya temukan adalah:

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

Sayangnya, itu hampir tidak menyelesaikan masalah. Saya ingin menangani kesalahan secara terprogram, bukan hanya mengulanginya ke arus keluaran.

rinogo
sumber
Saya kira saya selalu bisa melakukan sesuatu yang jahat dengan mencegat buffer output ...: /
rinogo