首页 > 解决方案 > Codeigniter 4分页与custome mysql查询

问题描述

在我的 Codeigniter 4 项目中,我使用$db->query('select * from myTable')方法来获取数据。(直接在没有模型的控制器上使用它)

有没有办法用 Codeigniter 为这种东西初始化分页。我是 Codeigniter 4 的新手,但没有工作$this->pagination->initialize($config);

它说Call to undefined method CodeIgniter\Pager\Pager::initialize()

有没有办法在不使用模型的情况下克服这个问题,我参考了文档(CI4)并做了很多谷歌搜索,但仍然没有运气!

标签: phpcodeigniter

解决方案


基本上在查询功能中,您可以传递您需要的内容。因此,只需添加 LIMIT 和 OFFSET。

$db->query('SELECT * FROM myTable LIMIT 5 OFFSET 0');

所以这个查询应该返回 5 个项目,从 0 开始。LIMIT 表示您需要多少项目,OFFSET 表示您要开始查找的位置。

您提到,您正在构建分页,因此您可以设置变量,从请求中获取限制和偏移量。因为不同页面上的参数应该不同。使用这样的东西。

$limit = $this->request->getPost('limit');
$offset = $this->request->getPost('offset');
$this->db->query("SELECT * FROM `kss_filepaths` LIMIT $limit OFFSET $offset");

但是,请尽量避免在生产中使用这样的代码,因为 LIMIT 子句容易受到 SQL 注入的影响,您可以在此处阅读有关它的更多信息


推荐阅读