CodeIgniter活动记录的偏移量没有限制?

Hai*_*ood 2 php mysql codeigniter sql-limit

我有两个变量$take(limit)和$skip(offset),它们是mysql中limit子句的值。

现在,代码点火器向后执行它的limit子句。

例如

$this->db->limit(5,10)LIMIT 10, 5在MYSQL中生成。

无论如何,我很难理解如何limit根据设置的两个值中的哪一个来调用函数。

基本上,

如果都设置了,我想打电话

$this->db->limit($take, $skip)

如果只$take设置了我想打电话

$this->db->limit($take)

但是,如果只有$skip is set, e.g. if$ skip = 10`,那我想显示什么,除了前10个,我想显示所有行。

我打电话吗

$this->db->limit(null, $skip)
$this->db->limit(0, $skip)
$this->db->limit(false, $skip)
完全不同的东西?

Kar*_*har 5

我认为您已经通过回答我们自己的问题找到了所需的答案,但是如果您想使用codeigniter来获取除前10个之外的所有行,那么您将需要执行以下操作(我尚未对其进行测试):

$this->db->limit(18446744073709551615, 10)
Run Code Online (Sandbox Code Playgroud)

根据Mysql文档

To retrieve all rows from a certain offset up to the end of the result set, you can use some large number for the second parameter.
Run Code Online (Sandbox Code Playgroud)

  • 是的,事实证明偏移量函数是无用的:/偏移量函数设置该值,但是,除非实际有限制,否则永远不会应用偏移量。考虑提交补丁程序...因此,您的答案很容易,尽管我可能会用PHP_INT_MAX替换`18446744073709551615`,因为这样可以消除“该数字是什么意思?!?”的歧义。对于未来的开发人员来说,这暗示着,我们不在乎数字是多少,我们只想要一个大数字! (3认同)