通常使用 getLastSql() 方法来查看刚执行过的SQL,但有时SQL语法错误,无法使用 getLastSql() 方法。
可以在SQL执行前将它打印出来
拼装出最后可执行SQL的位置在
ThinkPHP/Library/Think/Db/Driver.class.php
public function buildSelectSql($options=array()) { if(isset($options['page'])) { // 根据页数计算limit list($page,$listRows) = $options['page']; $page = $page>0 ? $page : 1; $listRows= $listRows>0 ? $listRows : (is_numeric($options['limit'])?$options['limit']:20); $offset = $listRows*($page-1); $options['limit'] = $offset.','.$listRows; } $sql = $this->parseSql($this->selectSql,$options); return $sql;}
可以在return 前输出 $sql 变量或写入日志。