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

标签 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(); 是获取查询字符串的可靠方法。

最佳答案

查询执行发生在所有 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

关于Codeigniter:执行 $this->db->last_query();执行查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15953811/

相关文章:

ruby-on-rails - 在某些特殊情况下如何跳过事件记录验证?

php - codeigniter 中数组数据的加法和乘法

php - 如何检查 codeigniter(php) 中的变量是否存在?新手问题

php - 如何更新codeigniter中的3个表?

ruby-on-rails - 覆盖默认的 Rails 模型模板

mysql - 其中条件 ActiveRecord Rails 3.1

codeigniter - 如何使用codeigniter编辑两个表

codeigniter - 如何通过redirect()传递验证错误数据?

php - Codeigniter + Ajax(jquery) 测验

php - 无法发送 session 缓存限制器 - header 已发送 - CodeIgniter (Session.php)