Php CodeIgniter钩子未捕获插入/更新查询

Php CodeIgniter钩子未捕获插入/更新查询,php,codeigniter,codeigniter-hooks,Php,Codeigniter,Codeigniter Hooks,我试图使用post\u系统或post\u控制器钩子捕获并记录数据库表中的所有插入和更新查询。但是,$querys=$CI->db->querys语句似乎根本无法捕获任何insert或update语句。它仅捕获SELECT语句,即使在各个视图/控制器中插入了新数据或更新了旧数据 这是我的相关代码: hooks.php <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); // also t

我试图使用
post\u系统
post\u控制器
钩子捕获并记录数据库表中的所有插入和更新查询。但是,
$querys=$CI->db->querys语句似乎根本无法捕获任何insert或update语句。它仅捕获SELECT语句,即使在各个视图/控制器中插入了新数据或更新了旧数据

这是我的相关代码:

hooks.php

<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

// also tried with post_controller hook
$hook['post_system'] = array(
    'class' => 'Db_query_log', 
    'function' => 'log_db_queries', 
    'filename' => 'db_log.php', 
    'filepath' => 'hooks'        
);
    <?php

class Db_query_log {

    function __construct() {
        //nothing special    
    }

    function log_db_queries() {
        $CI = & get_instance();
        $queries = $CI->db->queries;

        foreach ($queries as $key => $query) {
            echo $query . "<br>"; 
        // all statements displayed are SELECT statements even for UPDATE and INSERT operations performed by controllers where data is actually changed 
        }
    }

}

使用
post\u控制器
而不是
post\u系统

$hook['post_controller'] = array(
    'class' => 'Db_query_log', 
    'function' => 'log_db_queries', 
    'filename' => 'db_log.php', 
    'filepath' => 'hooks'        
);

要实现这一点,请打开任何帮助文件并将此代码放在底部

function log_que($sql) {
        $filepath = APPPATH . 'logs/Query-log-' . date('Y-m-d') . '.php';   
            $handle = fopen($filepath, "a+");
            fwrite($handle, $sql." \n Execution Time: ".date("Y-m-d H:i:s")."\n\n");  
            fclose($handle);   
}
然后转到system/database/DB_driver.php并找到名为“query”的函数 并将下面的代码放在函数的顶部

log_que($sql);'
然后,所有查询将保存在application/logs文件夹内的文件中

如果只想保存特定的查询,可以设置if条件。像

if(preg_match('/INSERT/',$sql)) {
 fwrite($handle, $sql." \n Execution Time: ".date("Y-m-d H:i:s")."\n\n");  
}

这没什么区别。它仍然没有捕获任何插入/更新查询。对我来说,它捕获了,我只是尝试了你的代码,它工作得很好。什么会阻止我的codeigniter实例获取插入/更新查询,任何建议/想法?我想这是重定向,在保存方法之后如果你想记录所有查询,我认为更好的方法是覆盖正在使用的db驱动程序中的查询方法。