sql >> Database teknologi >  >> RDS >> Mysql

CodeIgniter:SQL-revision af alle $this->db->query()-metodekald?

Det afhænger af, hvordan du vil revidere dem. Hvis du leder efter en sidebasis, vil det være fint at aktivere profileren. Dette viser alle forespørgsler, der kører på den pågældende sideindlæsning, samt den tid, det tager at udføre dem. Se linket nedenfor på profileren.

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

Hvis du ønsker at logge alle forespørgslerne, efterhånden som de sker, og derefter læse logfilen senere, bliver du nødt til at udvide databaseklassen. Hvis dette er tilfældet, så kommenter og jeg vil opdatere/udvide mit svar yderligere.

Udvider for at overskrive query()

Udvid MY_Loader.php i /application/core/ og indsæt denne funktion

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;
    }

Opret derefter /application/core/MY_DB_mysql_driver.php

Så indeni kan du overskrive query()

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

Erstat naturligvis mysql i filnavnet til den databasedriver, du bruger/forsøger at udvide.

Dette vil også fungere med Active Record som alle get() metoder kalder på query() fra driveren til at køre deres forespørgsler.



  1. Hvordan kan jeg tilføje en streng til et eksisterende felt i MySQL?

  2. mysql muliple forespørgsler i én erklæring

  3. Sådan udskiftes en del af en streng i SQL

  4. Kan ikke indlæse mysql.web assembly