MYSQLI获得的CodeIgniter与

MYSQLI获得的CodeIgniter与

将项目(我没有写过)上的CRUD文件从CI 1升级到CI3。这似乎可以正常工作并提取记录集,但最终却删除了限制功能。这是正在发生的事的示例。据我了解,get_compiled_select()和get()应该使用相同的选择字符串,但不会发生。请参阅下文/说明。

$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 '!'


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

最佳答案

$ this-> db-> get_compiled_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_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());

关于php - MYSQLI获得的CodeIgniter与,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50034194/

10-09 01:28