php this db query,php – CodeIgniter:所有$this-> db-> query()方法调用的SQL审计?

这取决于您想要如何审核它们.如果您要查找每页,那么启用分析器就可以了.这显示了在该页面加载上运行的所有查询以及执行它们所花费的时间.请参阅探查器上的以下链接.

如果您希望在发生所有查询时将其记录下来,然后再读取日志文件,则必须扩展数据库类.如果是这种情况,请发表评论并进一步更新/扩展我的答案.

扩展以覆盖查询()

在/ 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替换为您正在使用/尝试扩展的数据库驱动程序.

这也适用于Active Record,因为所有get()方法都会从驱动程序调用query()来运行查询.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值