显示错误:
$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()
方法具有三个不同的输出。 要检查它,您必须将结果保存在 ia var 中: $result = $wpdb->update( /* ... */ );
.
处理那些场景:
false === $result
: 失败0 === $result
: 成功,但没有更新0 < $result
: 成功
类输出
$wpdb->last_error
将向您显示最后一个错误(如果有)。$wpdb->last_query
将帮助您显示最后一个查询(发生错误的地方)。 它基本上与array_pop( $wpbd->queries );
.
重要(安全)说明
请做 不是 在现场添加此代码。 尤其是在涉及缓存插件的情况下。 这可能 向访问者公开重要的数据库相关数据!
如果你不能这样做:总是将你的代码包装在条件语句中以防止面向公众的调试输出!
// 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
对象也可能暴露你的数据库用户名和密码!
原文链接:https://www.wordpresshy.com/358797
© 版权声明
声明📢本站内容均来自互联网,归原创作者所有,如有侵权必删除。
本站文章皆由CC-4.0协议发布,如无来源则为原创,转载请注明出处。
THE END