我正在行使CodeIgniter 2并但愿考核全部$this-> db->查询($sql);挪用.
我们全部的数据库挪用都是通过query()要领挪用的;没有勾当记录行使.我必要记录$sql查询并将它们输入到自界说表中以举办审计记录.有没有人知道扩展焦点体系数据库库审计查询的要领?
看起来这应该很轻易,但我好像无法找到一个简朴的办理方案. CI论坛有几个关于旧版本的失败帖子.
最佳谜底
这取决于您想要怎样考核它们.假如您要查找每页,那么启用说明器就可以了.这表现了在该页面加载上运行的全部查询以及执行它们所耗费的时刻.请参阅探查器上的以下链接.
http://codeigniter.com/user_guide/general/profiling.html
假如您但愿在产生全部查询时将其记录下来,然后再读取日记文件,则必需扩展数据库类.假如是这种环境,请颁发评述并进一步更新/扩展我的谜底.
扩展以包围查询()
在/ 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()来运行查询.
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|