在模型操作中 ,为了更好的查明错误,经常需要查看下最近使用的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 thinkDb;
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) . "
", FILE_APPEND);
}