通过Active Record 类执行的语句,怎么显示最后的SQL语句.
比如:$query = $this->db->get('mytable');
怎么让它显示 SELECT * FROM mytable
谢谢了.. 我是有两个办法看sql的。
第一,看你的log,看它执行了什么sql.
第二,这个办法是有点变态,要求是对CI核心代码有一定的理解的基础上。
我是这么做的。
你先找到system/database/DB_driver.php
我们先为CI_DB_driver类加一个属性:
class CI_DB_driver{
....
var $sqlstr;
我们再找到function query()
这个函数的最开始处加下这样的一句话:
$this->sqlstr = $sql;
最后,我们为CI_DB_driver类添加一个方法,位置不限,getSql()
function getSql()
{
return $this->sqlstr;
}
这样,我们在controller里就可以这样调用了:
$query = $this->db->get('mytable');
//to do something....
echo $this->db->getSql();
这样就可以看到你的sql语句了。 $this->db->last_query(); 谢谢楼上的...还有楼上的楼上.. 如果我要在
$query = $this->db->get('mytable');
这段代码直接获取sql,好像没有办法把! 哈哈 ,在国外的论坛上找到了,用下面的方法
$this->db->_compile_select(); mageguoshi 发表于 2011-8-8 15:41 static/image/common/back.gif
哈哈 ,在国外的论坛上找到了,用下面的方法
$this->db->_compile_select();
不建议使用非公开 API,这样如果哪个版本的 CI 变化了,而文档上不会体现出来,就可能造成你的程序出错。 那有公开的api获取查询前的sql语句么 回ls,没有
页:
[1]