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?

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

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.


Saya kira saya selalu bisa melakukan sesuatu yang jahat dengan mencegat buffer output ...: /
rinogo
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.