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

Jam*_*ond 41 activerecord codeigniter codeigniter-2

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

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

    $sql = $this->db->last_query();
Run Code Online (Sandbox Code Playgroud)

或者,一旦你打电话给它,它会发生result_array()吗?

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

Muh*_*eel 83

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

$this->db->get('table_name');
$this->db->get_where('table_name',$array);
Run Code Online (Sandbox Code Playgroud)

而last_query包含最后运行的查询

$this->db->last_query();
Run Code Online (Sandbox Code Playgroud)

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

public function _compile_select($select_override = FALSE)
public function _reset_select()
Run Code Online (Sandbox Code Playgroud)

现在您可以编写查询并将其放入变量中

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

现在重置查询,这样如果要编写另一个查询,该对象将被清除.

$this->db->_reset_select();
Run Code Online (Sandbox Code Playgroud)

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

$this->db->from('myTable')
Run Code Online (Sandbox Code Playgroud)

代替

$this->db->get('myTable')
Run Code Online (Sandbox Code Playgroud)

它运行查询.

看看这个例子