web-dev-qa-db-ja.com

WordpressのコアからMySQLのエラーを記録する方法?

私はWordPressサイトを開発しています、そして私はWordPressコアからMySQLエラーを記録して処理することができたいです。

私のサイトはワードプレスのページと投稿が混在しています+ワードプレスエンジンの下で実行されるいくつかのPHPページ。私はphp.iniを設定して、エラー処理機能を持つすべてのphpスクリプトの前にphpファイルを追加しました。彼らはwordpressのコアと私自身のphpスクリプトの両方でphpエラーを捕らえるためにうまく働いています。

私は自分のphpスクリプトでMySQLのエラーもすべて捉えています。たとえば、データベースへの接続の失敗など.

私はまたwordpressのコアアプリケーションからのMySQLの最終的なエラーをキャッチし、記録しそして処理することができたいと思います。

助言がありますか?

ありがとう。

コーデックスを読んでいて答えが見つかりませんでした

4
jdias

あなたはすべてのあなた自身の問い合わせに対して wpdbクラス を使うべきです。すべてのコアクエリーはwpdbも使用します。 wpdbを参照してください。SQLエラーの表示と非表示

<?php $wpdb->show_errors(); ?> 
<?php $wpdb->hide_errors(); ?> 

Print_errorを使用して、最新のクエリによって生成されたエラー(もしあれば)を印刷することもできます。

<?php $wpdb->print_error(); ?>

wp-config.phpSAVEQUERIES定数も参照してください。

define('SAVEQUERIES', true);

使用例

<?php
if (current_user_can('administrator')){
    global $wpdb;
    echo "<pre>";
    print_r($wpdb->queries);
    echo "</pre>";
}
?>

Debug Bar&Consoleのような、便利なデバッグプラグインもたくさんあります。これと他のデバッグ関連のプラグインのためにWordPressプラグインリポジトリを検索してください。

6
Milo

これを行う1つの方法:

  1. db.phpwp-contentというファイルを作成します。 Wordpressは、$wpdbオブジェクトをインスタンス化する直前にこのファイルを読み込みます。
  2. classを拡張するwpdbを作成し、必要に応じてprint_errorsメソッドを上書きします。
  3. そのファイルの最後で、あなたのクラスをインスタンス化し、それに変数$wpdbを設定します(例、$wpdb = new wpdb2(DB_USER, DB_PASSWORD, DB_NAME, DB_Host);
  4. Wordpressは代わりにあなたの$wpdbを使うようになります。
0
blockhead

やってみる

global $wpdb;
echo $wpdb->last_query;

私はAjaxを使っているので、これは直接文字列形式です。

0
insidepower