Thinkphp 5 调试执行的SQL语句 tp5的打印最后一条sql

在模型操作中 ,为了更好的查明错误,经常需要查看下最近使用的SQL语句,我们可以用getLastsql方法来输出上次执行的sql语句。例如:

User::get(1);
echo User::getLastSql();

输出结果是 SELECT * FROM 'think_user' WHERE 'id' = '1'

也可以使用fetchSql方法直接返回当前的查询SQL而不执行,例如:

echo User::fetchSql()->find(1);

输出的结果是一样的。

getLastSql方法只能获取最后执行的SQL记录,如果需要了解更多的SQL日志,可以通过查看当前的Trace信息或者日志文件。

tp5的打印最后一条sql

//以下都需要需要引用类库
use think\Db;

Logs("第".__LINE__."行.loging/index","loging","loging");
Logs(db("lb_admin_mechanism")->getLastSql(),"loging","loging");

Db::name('report')->fetchSql(true)->insert($report)强制打印
//打印语句
dump( Db::table('table_name')->getLastSql());
dump( Db::getLastSql());


/**创建日志文件
 * $content   @array/@string  要记录的数据
 * $dir       @string   文件夹名字
 * $file      @string  日志文件名字
 * author haima
 */
function Logs($content,$dir,$file='')
{
    if(empty($dir)) die("文件夹名不可为空");
    $file_path = ROOT_PATH . 'Logs/'.$dir;
    if(!is_dir($file_path)){
        mkdir($file_path, 0777, true);
    }
    file_put_contents($file_path.'/'. $file . date('Ymd',time()) . '.log', date('Y-m-d H:i:s',time()) .' ' . var_export($content,true) . "\r\n", FILE_APPEND);
}


posted @ 2018-09-11 14:52  HaimaBlog  阅读(4705)  评论(0编辑  收藏  举报