Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

CodeIgniter:Kiểm tra SQL của tất cả các lệnh gọi phương thức $ this-> db-> query ()?

Nó phụ thuộc vào cách bạn muốn kiểm tra chúng. Nếu bạn đang tìm kiếm cơ sở trên mỗi trang thì việc kích hoạt trình biên dịch sẽ ổn. Điều này cho thấy tất cả các truy vấn chạy trên tải trang đó cũng như thời gian thực hiện chúng. Xem liên kết bên dưới về hồ sơ.

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

Nếu bạn đang muốn ghi lại tất cả các truy vấn khi chúng xảy ra và sau đó đọc tệp nhật ký sau đó, bạn sẽ phải mở rộng lớp cơ sở dữ liệu. Nếu đúng như vậy, hãy bình luận và tôi sẽ cập nhật / mở rộng câu trả lời của mình hơn nữa.

Mở rộng để ghi đè query()

Mở rộng MY_Loader.php trong / application / core / và chèn chức năng này vào

Cơ sở dữ liệu hàm
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;
    }

Sau đó, tạo /application/core/MY_DB_mysql_driver.php

Sau đó, bên trong đó bạn có thể ghi đè truy vấn ()

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

Rõ ràng là thay thế mysql trong tên tệp thành bất kỳ trình điều khiển cơ sở dữ liệu nào bạn đang sử dụng / đang cố gắng mở rộng.

Điều này cũng sẽ hoạt động với Active Record vì tất cả get() các phương thức gọi theo query() từ trình điều khiển để chạy các truy vấn của họ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để vi keybindings hoạt động trong máy khách mysql?

  2. Lỗi mã hóa khi ghi dữ liệu từ tệp excel vào cơ sở dữ liệu (mysql)

  3. nhóm theo ngày, xác nhận, đang chờ xử lý

  4. Làm cách nào để quyết định khi nào sử dụng liên kết phải / liên kết trái hoặc liên kết bên trong Hoặc làm thế nào để xác định bảng nào nằm ở phía nào?

  5. Tại sao các truy vấn được thực thi từ bàn làm việc mysql lại mất nhiều thời gian hơn so với việc thực thi chúng trực tiếp từ cli mysql?