Codeigniter主动记录sql错误

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

$this->db->get_where('em_user', $whereArr, 30, 0)->num_rows()

返回一个看起来像这样的mysql错误,

错误号码:1064

你的SQL语法有错误; 检查与您的MySQL服务器版本相对应的手册,以便在第2行'WHERE email ='your@emailaddress.com'AND password ='letmein'LIMIT 1'附近使用正确的语法

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

但是,如果我运行这个代码,

$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

没有FROM子句。 我认为它应该是:

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

$this->db->get_where('em_user', $whereArr, 30, 30)->num_rows()不会得到任何结果。 num_rows()会给你结果的数量。


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

$this->db->get_where('em_user', $whereArr, 30, 0)->num_rows()

因为在错误消息中它出现了极限1,但是在你的代码中你限制了30

无论如何,你可以尝试这条线,而不是get_where

$this->db->where($whereArr)->limit(30,0)->get('em_user');

并注意这一行将返回num行而不是记录

您也可以通过在get_where或query之后添加此行来查看查询,以确定它是否正确

die($this->db->last_query());
链接地址: http://www.djcxy.com/p/43769.html

上一篇: Codeigniter active record sql error

下一篇: Active Record implementation of this SQL?