Php Codeigniter活动记录sql错误
我正在使用codeigniter中的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`
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行
选择*WHEREemail
=
'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中添加一个偏移量以及我从中得到的值呢?请添加一些解释,说明为什么你认为答案可以解决这个问题,以帮助未来的读者。非常感谢。