在模型操作中 ,為了更好的查明錯誤,經常需要查看下最近使用的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);
}