gpt4 book ai didi

php - 没有 LIMIT 子句的 codeigniter 事件记录获取查询和查询

转载 作者:IT老高 更新时间:2023-10-28 23:59:11 25 4
gpt4 key购买 nike

我使用事件记录,一切正常,但我想将 $data["totalres"] 设置为总结果,我的意思是,相同的查询但没有 LIMIT

问题是当您执行查询修饰符时,前面的语句会被取消设置,所以我什至无法在获得结果后添加 $this->db->limit()。

有什么想法吗?我认为只是为了执行此操作而“复制”查询是一种不好的做法

function get_search($start, $numrows, $filter = array())
{

...

$this->db
->select("emp")
->from('emp')
->join('empr', 'empr.b = empr.id', 'left')
->like('code', $code)
->limit($numrows, $start);

...

$q = $this->db->get();

// number of rows WITHOUT the LIMIT X,Y filter
$data["totalres"] = ???????;

if ($q->num_rows() > 0)
{
$data["results"] = $q->result();
} else {
$data["results"] = array();
}

return $data;
}

最佳答案

您可以使用 SQL_CALC_FOUND_ROWS获取本应返回 sans-LIMIT 的行数。请注意 select 行中的 ,FALSE。这告诉 CodeIgniter 不要试图用反引号转义 SELECT 子句(因为 SQL_CALC_FOUND_ROWS 不是字段,CodeIgniter 没有意识到这一点)。

$this->db
->select("SQL_CALC_FOUND_ROWS emp", FALSE)
->from('emp')
->join('empr', 'empr.b = empr.id', 'left')
->like('code', $code)
->limit($numrows, $start);

$q = $this->db->get();

然后在运行该查询后,我们需要运行另一个查询来获取总行数。

$query = $this->db->query('SELECT FOUND_ROWS() AS `Count`');
$data["totalres"] = $query->row()->Count;

关于php - 没有 LIMIT 子句的 codeigniter 事件记录获取查询和查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7421873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com