Codeigniter:$ this-> db-> last_query();执行查询?

时间:2013-04-11 16:13:51

标签: codeigniter activerecord codeigniter-2

查询执行是否发生在以下codeigniter活动记录语句的get_where()子句中?

$this->db->select('*');
    $q = $this->db->get_where('Contacts', array('id' => $contact_id));

    $sql = $this->db->last_query();

或者在您拨打result_array()后会发生什么?

$this->db->last_query();是获取查询字符串的可靠方法。

2 个答案:

答案 0 :(得分:81)

查询执行发生在所有get方法上,如

$this->db->get('table_name');
$this->db->get_where('table_name',$array);

虽然last_query包含最后一个运行的查询

$this->db->last_query();

如果要在不执行的情况下获取查询字符串,则必须执行此操作。 转到system / database / DB_active_rec.php从这些函数中删除public或protected关键字

public function _compile_select($select_override = FALSE)
public function _reset_select()

现在您可以编写查询并将其置于变量

$this->db->select('trans_id');
$this->db->from('myTable');
$this->db->where('code','B');
$subQuery = $this->db->_compile_select();

现在重置查询,这样如果你想编写另一个查询,就会清除该对象。

$this->db->_reset_select();

事情已经完成了。干杯!!! 注意:使用这种方式时必须使用

$this->db->from('myTable')

而不是

$this->db->get('myTable')

运行查询。

Take a look at this example

答案 1 :(得分:0)

对我来说save_queries选项已关闭,

$this->db->save_queries = TRUE; //Turn ON save_queries for temporary use.
$str = $this->db->last_query();
echo $str;

参考:Can't get result from $this->db->last_query(); codeigniter