codeigniter mysqli get与

s6fujrry  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(383)

将项目(我没有编写)上的crud文件从ci1升级到ci3。它似乎在工作并拉取记录集,但它正在删除最后的限制功能。这是正在发生的事情的一个例子。据我所知,get\u compiled\u select()和get()应该使用相同的select字符串,但事实并非如此。请看下面/解释。

$this->db->limit($options['limit'], $options['offset']);
print($this->db->get_compiled_select());
$query = $this->db->get();  //Seems to be dropping limit.
print($this->db->last_query());

这将导致:

SELECT * FROM `students` WHERE surname LIKE '%' ESCAPE '!' OR fname LIKE '%' ESCAPE '!' LIMIT 24
SELECT * FROM `students` WHERE surname LIKE '%' ESCAPE '!' OR fname LIKE '%' ESCAPE '!'

很明显,它返回所有的记录并遍历它们。不知道为什么这两个会如此不同。有人知道为什么会这样,怎么解决吗?

a11xaf1n

a11xaf1n1#

$this->db->get\u compiled\u select()默认重置查询生成器,您可以尝试

$this->db->limit($options['limit'], $options['offset']);
print($this->db->get_compiled_select()); // Query Builer resets here
$query = $this->db->get('mytable',limit,offset);  //Seems to be dropping limit.
print($this->db->last_query());

或者您可以将get\u compiled select中的第二个参数传递为false

$this->db->limit($options['limit'], $options['offset']);
print($this->db->get_compiled_select('MyTable',FALSE)); // 
$query = $this->db->get('mytable',limit,offset);  limit.
print($this->db->last_query());

相关问题