codeigniter 代码触发器:最后一个查询();执行查询?

bt1cpqcv  于 2022-12-06  发布在  其他
关注(0)|答案(3)|浏览(134)

查询执行是否发生在以下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();是获取查询字符串的可靠方法吗?

1aaf6o9v

1aaf6o9v1#

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

它运行查询。
看一下这个例子

2eafrhcq

2eafrhcq2#

对我来说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

wvmv3b1j

wvmv3b1j3#

对我来说,它非常有效:Source披露:这个源网站属于我,我也在我的网站上分享解决方案...

public function index()
{
    $db = \Config\Database::connect();
    $heroesCount = $db->table('products')->countAll();
    echo $db->getLastQuery();
    exit;
}

相关问题