Php Codeigniter活动记录sql错误

Php Codeigniter活动记录sql错误,php,mysql,activerecord,codeigniter,Php,Mysql,Activerecord,Codeigniter,我正在使用codeigniter中的get_where()函数,我得到了mysql错误,这取决于我设置的限制和偏移量,例如这段代码 $this->db->get_where('em_user', $whereArr, 30, 0)->num_rows() $this->db->get_where('em_user', $whereArr, 30, 30)->num_rows() 返回如下所示的mysql错误 SELECT * FROM (`em_user`

我正在使用codeigniter中的
get_where()
函数,我得到了mysql错误,这取决于我设置的限制和偏移量,例如这段代码

$this->db->get_where('em_user', $whereArr, 30, 0)->num_rows()
$this->db->get_where('em_user', $whereArr, 30, 30)->num_rows()
返回如下所示的mysql错误

SELECT * FROM (`em_user`) WHERE `email` = 'your@emailaddress.com' AND `password` = 'letmein' LIMIT 30, 30
错误号码:1064

您的SQL语法有错误; 检查相应的手册 您的MySQL服务器版本 使用near'WHERE的正确语法
电子邮件
='your@emailaddress.com"及
密码
='letmein'限制1'在 第2行

选择*WHERE
email
= 'your@emailaddress.com"及
密码
='letmein'限制1

但是如果我运行这个代码

$this->db->get_where('em_user', $whereArr, 30, 0)->num_rows()
$this->db->get_where('em_user', $whereArr, 30, 30)->num_rows()
它似乎运行良好,似乎运行良好,它没有返回任何结果,但我没有得到错误(我假设没有结果是因为偏移量为30,我的表中只有2条记录)

此代码生成的sql如下所示

SELECT * FROM (`em_user`) WHERE `email` = 'your@emailaddress.com' AND `password` = 'letmein' LIMIT 30, 30
我不明白为什么在查询结束时限制1会引起如此多的悲伤,有人能告诉我吗?

这行

SELECT * WHERE email = 'your@emailaddress.com' AND password = 'letmein' LIMIT 1
没有来自子句的
。我想应该是:

SELECT * from em_user WHERE email = 'your@emailaddress.com' AND password = 'letmein' LIMIT 1

$this->db->get_where('em_user',$whererr,30,30)->num_rows()
不会得到任何结果。num_rows()将为您提供结果数。

我认为此错误与您的代码行无关

$this->db->get_where('em_user', $whereArr, 30, 0)->num_rows()
因为在错误消息中,它显示为限制1,但在代码中,您限制30

无论如何,你可以试试这句话,而不是去哪里

$this->db->where($whereArr)->limit(30,0)->get('em_user');
请注意,此行将返回num行而不是记录

此外,您还可以通过在get_where或查询之后添加此行来查看查询,以确保其正确与否

die($this->db->last_query());

这就是我的意思,为什么我在SQL中添加一个偏移量以及我从中得到的值呢?请添加一些解释,说明为什么你认为答案可以解决这个问题,以帮助未来的读者。非常感谢。