Php 无法在查询中设置限制值

Php 无法在查询中设置限制值,php,mysql,codeigniter,Php,Mysql,Codeigniter,我正在使用Codeigniter我在设置查询中的“Limit”值时遇到了一个问题,Limit只显示“Limit NULL” 下面是我的代码片段 SELECT block.loc, owner.name , block.dist_name FROM house INNER JOIN block ON house.block_id = block.block_id INNER JOIN owner ON owner.house_id = house.house_id WHERE

我正在使用Codeigniter我在设置查询中的“Limit”值时遇到了一个问题,Limit只显示“Limit NULL”

下面是我的代码片段

SELECT block.loc, owner.name , block.dist_name FROM   house INNER JOIN block ON house.block_id = block.block_id INNER JOIN owner ON owner.house_id = house.house_id WHERE 
            block.dist = ? AND house.status = 5 limit ? , ? 
 $result = $this->db->query($qry, array($this->getDist(), (int) $this->getLimitStart(), (int) $this->getLimitOffset()));
倾倒

(int) $this->getLimitStart() is '0' and (int) $this->getLimitOffset() is '10'

您应该像这样交换起始值和偏移值

SELECT block.loc, owner.name , block.dist_name FROM   house INNER JOIN block ON house.block_id = block.block_id INNER JOIN owner ON owner.house_id = house.house_id WHERE 
        block.dist = ? AND house.status = 5 limit ? , ? 
 $result = $this->db->query($qry, array($this->getDist(), (int) $this->getLimitOffset(),(int) $this->getLimitStart()));
因为codeigniter active record limit的第一个参数是limit,第二个参数是offset

http://codeigniter.com/user_guide/database/active_record.html

试试这个:
$this->db->limit($nrecords,$offset)

据我所知,您为对象创建了自己的getter setter,您在查询中提供的getter返回NULL只是因为您没有使用相同的setter

例如:
如果您使用它($this->getLimitOffset()),您必须将其设置为yourObject->setLimitOffset(10)。我想它现在会对你起作用。

好吧,交换什么都没有,尽管很明显两者都返回数值,并且按交换顺序使用它们没有任何意义,但我还是尝试了,也没有帮助。好吧,$this->db->limit(10,20);意思是限制是10,起点是20,但这里你提供了限制0,所以它不会给你任何结果。将其更改为$this->db->limit(10,10)$该->数据库->限制(10,10);我已经试过了。不起作用,而且如果我们使用$this->db->limit(10,10)或pass limit作为参数,这两种方法都会起作用,但问题是,它不是返回“0”或“10”,而是返回我“Null”,很抱歉尝试一下,因为查询可能不会获取超过10个结果$this->db->limit(10,0);好的,那么不要使用查询绑定,而是使用其他东西,因为我认为查询绑定可能适用于where条件,但不适用于limit、order by和group by等。您可以在回答中记录这是如何解决问题的吗?谢谢