Phát hiện lỗi được tạo bởi $ wpdb-> get_results ()


9

Làm cách nào để phát hiện lỗi khi sử dụng $ wpdb-> get_results ()?

Ví dụ:

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

Mã trước không tạo ra bất kỳ ngoại lệ hoặc lỗi nào; nó chỉ đơn giản là đặt kết quả $ thành một mảng trống. Làm thế nào để chúng tôi phát hiện lỗi một cách đáng tin cậy được tạo bởi get_results ()?

Câu trả lời:


7

Có một biến lớp lưu trữ chuỗi lỗi cuối cùng - $ wpdb-> last_error. Theo cách nhìn của $ wpdb được mã hóa, nếu truy vấn thành công, $ wpdb-> last_error sẽ là một chuỗi rỗng, nếu thất bại, đó sẽ là chuỗi lỗi được trả về bởi MySQL. Vì vậy, một cái gì đó như thế này sẽ làm cho lừa.

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

Nghe có vẻ hợp lý - Tôi không thể xem xét điều này ngay bây giờ, nhưng nếu điều này hoạt động, nó sẽ có ích trong tương lai! Cảm ơn! :)
rinogo

Trở lại vấn đề này trong một nhiệm vụ sau này - hoạt động rất tốt! Tôi đã đặt mã này vào một hàm; Tôi đã cập nhật câu trả lời của bạn; Tôi hy vọng bạn không phiền!
rinogo

1

Điều tốt nhất tôi có thể tìm thấy là:

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

Thật không may, điều đó hầu như không giải quyết vấn đề. Tôi muốn xử lý lỗi theo chương trình, không chỉ lặp lại lỗi cho luồng đầu ra.


Tôi cho rằng tôi luôn có thể làm điều gì đó khó chịu bằng cách chặn bộ đệm đầu ra ...: /
rinogo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.