Hiển thị lỗi:
$wpdb->show_errors = true
hiển thị lỗi tự động, nếu WP_DEBUG
được đặt thành true
.
$wpdb->suppress_errors = false
dừng việc khắc phục lỗi.
Multisite cần điều trị đặc biệt
// Show errors in Multisite:
global $wpdb, $blog_id;
// There's no is_multisite(), so we need to check the ID
// This means, that we can't debug the blog with the ID 1 as MU-blog by default
// Check if we are on Blog ID#1 and if not, check the defines and add error handling
if ( 1 !== $blog_id )
! defined( 'DIEONDBERROR' ) AND define( 'DIEONDBERROR', true );
Xử lý đầu ra
Các $wpdb->update()
phương pháp có ba đầu ra khác nhau. Để kiểm tra lại nó, bạn phải lưu kết quả ia var : $result = $wpdb->update( /* ... */ );
.
Việc xử lý các kịch bản:
false === $result
: Thất bại
0 === $result
: Thành công, nhưng không cập nhật
0 < $result
: Sự thành công
Đầu ra lớp
$wpdb->last_error
sẽ chỉ cho bạn lỗi cuối cùng, nếu bạn có một lỗi.
$wpdb->last_query
sẽ hỗ trợ bạn hiển thị truy vấn cuối cùng (nơi xảy ra lỗi). Về cơ bản là giống như array_pop( $wpbd->queries );
.
Quan trọng (bảo mật) Lưu ý
Vui lòng KHÔNG thêm mã này trên trang web trực tiếp. Đặc biệt là không nếu các plugin lưu trữ có liên quan. Điều này có thể tiết lộ dữ liệu quan trọng liên quan đến DB cho khách truy cập !
Nếu bạn không thể làm khác: luôn luôn bọc mã của bạn trong các câu lệnh có điều kiện để ngăn chặn đầu ra gỡ lỗi công khai!
// Example
function debug_query( $result, $data )
{
global $current_user;
get_currentuserinfo();
if ( current_user_can( 'manage_options' ) )
{
global $wpdb, $blog_id;
1 !== $blog_id
AND ! defined( 'DIEONDBERROR' )
AND define( 'DIEONDBERROR', true );
$wpdb->show_errors = true;
$wpdb->suppress_errors = false;
$output = '<pre style="white-space:pre-line;">';
$output .= 'Last Error: ';
$output .= var_export( $wpdb->last_error, true );
$output .= "\n\nLast Query: ";
$output .= var_export( $wpdb->last_query, true );
if ( false === $result )
{
$result = new WP_Error( 'query_failed', 'No update.', $data );
}
elseif ( 0 === $result )
{
$result = new WP_Error( 'update_failed', 'Updated zero rows.', $data );
}
elseif ( 0 < $result )
{
$result = 'Success';
}
$output .= '</pre>';
// Only abort, if we got an error
is_wp_error( $result )
AND exit( $output.$result->get_error_message() );
}
}
Phơi bày $wpdb
đối tượng cũng có thể làm lộ tên người dùng và mật khẩu cơ sở dữ liệu của bạn!