sql >> データベース >  >> RDS >> Mysql

CodeIgniter:すべての$ this-> db-> query()メソッド呼び出しのSQL監査?

    それはあなたがそれらをどのように監査したいかによります。ページごとに探している場合は、プロファイラーを有効にすることで問題ありません。これは、そのページの読み込みで実行されたすべてのクエリと、それらの実行にかかった時間を示しています。プロファイラーで以下のリンクを参照してください。

    http://codeigniter.com/user_guide/general/profiling.html

    発生したすべてのクエリをログに記録し、後でログファイルを読み取る場合は、データベースクラスを拡張する必要があります。その場合は、コメントしてください。回答をさらに更新/拡張します。

    query()を上書きするように拡張

    / application / core /でMY_Loader.phpを拡張し、この関数を挿入します

    function database($params = '', $return = FALSE, $active_record = NULL)
        {
            // Grab the super object
            $CI =& get_instance();
    
            // Do we even need to load the database class?
            if (class_exists('CI_DB') AND $return == FALSE AND $active_record == NULL AND isset($CI->db) AND is_object($CI->db)) {
                return FALSE;
            }
    
            require_once(BASEPATH.'database/DB'.EXT);
    
            // Load the DB class
            $db =& DB($params, $active_record);
    
            $my_driver = config_item('subclass_prefix').'DB_'.$db->dbdriver.'_driver';
            $my_driver_file = APPPATH.'core/'.$my_driver.EXT;
    
            if (file_exists($my_driver_file)) {
                require_once($my_driver_file);
                $db = new $my_driver(get_object_vars($db));
            }
    
            if ($return === TRUE) {
                return $db;
            }
    
            // Initialize the db variable.  Needed to prevent
            // reference errors with some configurations
            $CI->db = '';
            $CI->db = $db;
        }
    

    次に、/ application / core / MY_DB_mysql_driver.php

    を作成します。

    次に、その中でquery()を上書きできます

    function query($sql, $binds = FALSE, $return_object = TRUE) {
        // Do your stuff
        return parent::query( $sql, $binds, $return_object );
    }
    

    明らかに、ファイル名のmysqlを、使用している/拡張しようとしているデータベースドライバーに置き換えてください。

    これは、すべてのget()としてActiveRecordでも機能します。 メソッドはquery()を呼び出します ドライバーからクエリを実行します。



    1. MySQLGUIプログラム

    2. MySQLデータベースでフルネームまたはファーストネームまたはラストネームを別々の列のファーストネームとラストネームで検索する

    3. ダウンタイムなしでPostgreSQL10をPostgreSQL11にアップグレードする方法

    4. 正規表現を使用して単語の接辞を無視しながら単語全体を照合する