【TP5 :错误和调试】SQL调试

版权声明:本文为ywcmoon原创文章,未经允许不得转载。 https://blog.csdn.net/qq_39251267/article/details/82498957

SQL调试

查看SQL记录

如果开启了数据库的调试模式的话,可以在日志文件(或者设置的日志输出类型)中看到详细的SQL执行记录以及性能分析

//一个典型的SQL日志:

[ SQL ] SHOW COLUMNS FROM `think_action` [ RunTime:0.001339s ]
[ EXPLAIN : array ( 'id' => '1', 'select_type' => 'SIMPLE', 'table' => 'think_action', 'partitions' => NULL, 'type' => 'ALL', 'possible_keys' => NULL, 'key' => NULL, 'key_len' => NULL, 'ref' => NULL, 'rows' => '82', 'filtered' => '100.00', 'extra' => NULL, ) ]
[ SQL ] SELECT * FROM `think_action` LIMIT 1 [ RunTime:0.000539s ]

监听SQL

开启数据库调试模式,listen方法可监听数据库执行的SQL操作

Db::listen(function($sql,$time,$explain){
    // 记录SQL
    echo $sql. ' ['.$time.'s]';
    // 查看性能分析结果
    dump($explain);
});

如果没有注册任何监听操作,默认这些SQL执行会被根据不同的日志类型记录到日志中

调试执行的SQL语句

getLastsql方法,输出最后执行的SQL记录

User::get(1);
echo User::getLastSql();
输出结果是 SELECT * FROM 'think_user' WHERE 'id' = '1'

fetchSql方法,直接返回当前的查询SQL而不执行

echo User::fetchSql()->find(1);
输出的结果一样

如需了解更多的SQL日志,可查看当前的Trace信息或者日志文件

猜你喜欢

转载自blog.csdn.net/qq_39251267/article/details/82498957