การตรวจจับข้อผิดพลาดที่สร้างโดย $ wpdb-> get_results ()


9

ฉันจะตรวจพบข้อผิดพลาดเมื่อใช้ $ wpdb-> get_results () ได้อย่างไร

ตัวอย่างเช่น:

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

รหัสก่อนหน้านี้ไม่ได้สร้างข้อยกเว้นหรือข้อผิดพลาดใด ๆ มันเพียงแค่กำหนดผลลัพธ์ $ เป็นอาร์เรย์ที่ว่างเปล่า เราจะตรวจสอบข้อผิดพลาดที่เชื่อถือได้ที่สร้างขึ้นโดย get_results () ได้อย่างไร?

คำตอบ:


7

มีตัวแปรคลาสที่เก็บสตริงข้อผิดพลาดล่าสุด - $ wpdb-> last_error โดยลักษณะของวิธีการเขียนรหัส $ wpdb หากแบบสอบถามประสบความสำเร็จ $ wpdb-> last_error จะเป็นสตริงว่างถ้ามันล้มเหลวมันจะเป็นสตริงข้อผิดพลาดที่ส่งคืนโดย MySQL ดังนั้นสิ่งนี้จะทำเคล็ดลับ

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

ฟังดูสมเหตุสมผล - ตอนนี้ฉันไม่สามารถตรวจสอบเรื่องนี้ได้ แต่ถ้าใช้งานได้มันจะมีประโยชน์ในอนาคต! ขอบคุณ! :)
rinogo

กลับมาที่นี่ในการมอบหมายในภายหลัง - ใช้งานได้ดี! ฉันใส่รหัสนี้ในฟังก์ชั่น; ฉันอัปเดตคำตอบของคุณ; ฉันหวังว่าคุณจะไม่รังเกียจ!
rinogo

1

สิ่งที่ดีที่สุดที่ฉันสามารถหาได้คือ:

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

น่าเสียดายที่แทบจะไม่สามารถแก้ปัญหาได้ ฉันต้องการจัดการข้อผิดพลาดโดยทางโปรแกรมไม่ใช่เพียงแค่สะท้อนไปยังเอาต์พุตสตรีม


ฉันคิดว่าฉันสามารถทำสิ่งที่น่ารังเกียจเสมอกับการดักเอาท์พุทบัฟเฟอร์ ... : /
rinogo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.