Php 在CodeIgniter 1.7中获取原始SQL查询
我试图在我的第一个严肃的CodeIgniter应用程序中调试一些代码,但我似乎找不到哪里可以简单地获得我的ActiveRecord代码刚刚生成的原始SQLPhp 在CodeIgniter 1.7中获取原始SQL查询,php,codeigniter,Php,Codeigniter,我试图在我的第一个严肃的CodeIgniter应用程序中调试一些代码,但我似乎找不到哪里可以简单地获得我的ActiveRecord代码刚刚生成的原始SQL $where = 'DAY(`datetime_start`) = '. date('d',$day) .' AND '; $where .= 'MONTH(`datetime_start`) = '. date('m',$day) .''; $this->db->from('events')->
$where = 'DAY(`datetime_start`) = '. date('d',$day) .' AND ';
$where .= 'MONTH(`datetime_start`) = '. date('m',$day) .'';
$this->db->from('events')->where($where);
$result = $this->db->get();
谢谢你的帮助 当然,我是在发帖2分钟后发现的,承蒙您的好意
此外,您还可以将以下内容放入控制器中:
$this->output->enable_profiler(TRUE);
您将获得查询和更多信息。在查询运行之前:
$this->db->_compile_select();
在它运行之后:
$this->db->last_query();
在CI的下一个版本发布之前,您可以制作类似的内容
private function get_query_string()
{
return 'SELECT ' .
implode( ' , ' , $this->db->ar_select ) .
' FROM ' .
implode( ' , ' , $this->db->ar_from ) .
( count( $this->db->ar_where ) ? ' WHERE ' : '' ) .
implode( ' ' , $this->db->ar_where );
}
对于任何发现这篇旧文章并想知道最新v3中的内容的人,函数是$this->db->get_compiled_select()。_compile_select()在更新版本的CodeIgniter中被标记为受保护(可能只是为了PHP4兼容性,它以前没有被声明为受保护)。因此,您可以将限制设置为1以避免执行大型查询,然后调用last_query(),或者您可以使用反射,但第一个选项更可取;它已经在dev分支()中。我将该方法复制到DB_active_rec,它工作得很好,即使与此库结合使用:这不太可能产生关于实际运行的查询的准确结果
private function get_query_string()
{
return 'SELECT ' .
implode( ' , ' , $this->db->ar_select ) .
' FROM ' .
implode( ' , ' , $this->db->ar_from ) .
( count( $this->db->ar_where ) ? ' WHERE ' : '' ) .
implode( ' ' , $this->db->ar_where );
}