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