오류 표시 :
$wpdb->show_errors = true
WP_DEBUG
로 설정된 경우 오류가 자동으로 표시 됩니다 true
.
$wpdb->suppress_errors = false
오류 억제를 중지합니다.
다중 사이트에는 특별한 치료가 필요합니다
// 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 );
출력 처리
이 $wpdb->update()
방법에는 세 가지 출력이 있습니다. 이를 확인하려면 var : 결과를 저장해야합니다 $result = $wpdb->update( /* ... */ );
.
이러한 시나리오를 처리합니다.
false === $result
: 실패
0 === $result
: 성공하지만 업데이트되지 않음
0 < $result
: 성공
클래스 출력
$wpdb->last_error
마지막 오류가 있으면 표시됩니다.
$wpdb->last_query
마지막 쿼리 (오류가 발생한 위치)를 표시하는 데 도움이됩니다. 기본적으로와 동일합니다 array_pop( $wpbd->queries );
.
중요 (보안) 참고
라이브 코드에는이 코드를 추가 하지 마십시오 . 특히 캐싱 플러그인이 관련된 경우에는 그렇지 않습니다. 중요한 DB 관련 데이터가 방문자에게 노출 될 수 있습니다 .
다른 방법으로 할 수없는 경우 : 항상 코드를 조건문으로 감싸서 공개 디버그 출력을 방지하십시오!
// 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() );
}
}
$wpdb
객체를 노출하면 데이터베이스 사용자 이름과 비밀번호도 노출 될 수 있습니다!