CI查看当前页面执行的所有sql语句

CI框架中有一个查看最后一条sql执行的方法

/system/database/DB_driver.php 文件的1085行左右

public function last_query()
{
    return end($this->queries);
}

 有时需要查看一个页面中执行的所有sql语句,这在优化时很有帮助。减少sql查询次数,也是优化的一个方面,其实只要把返回语句的end()去掉就行了!在DB_driver.php中新增如下方法

public function total_query()
{	
    array_walk($this->queries, function(&$v, $k){
        $v = preg_replace('/\n/', ' ', $v) .' #query time:'. $this->query_times[$k] . ' sec';
    });
    return $this->queries;
}

在控制器需要的地方断点执行

echo '
';
print_r($this->sdb->total_query());die;

就能看到当前业务中在断点前执行的所有sql语句以及各语句的执行时间!

Array
(
    [0] => SELECT `codes` FROM `advert` WHERE `id` = 16 #query time:0.00062799453735352 sec
    [1] => SELECT `id`, `name`, `classify`, IF(id > 127 and classify = 1, 'game', 'html') as gamedir FROM `game_list` WHERE `id` in (20,38,15,67) ORDER BY field(id, 20, 38, 15, 67) #query time:0.0010020732879639 sec
)

 

你可能感兴趣的:(CI,PHP,CI,所有sql语句)