【问题标题】:Codeigniter active record sql errorCodeigniter活动记录sql错误
【发布时间】:2010-05-05 15:28:42
【问题描述】:

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

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

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

错误号:1064

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

选择 * WHERE email = 'your@emailaddress.com' 和 password = 'letmein' 限制 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 会造成如此多的痛苦,请谁能赐教?

【问题讨论】:

    标签: php mysql activerecord codeigniter


    【解决方案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
    

    【讨论】:

    • 这就是我的意思,当我添加一个偏移量以及我在 SQL 中得到 from 时怎么会?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      因为在错误消息中显示为 LIMIT 1,但在您的代码中限制为 30

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

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

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

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

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

      【讨论】:

        【解决方案4】:
        $this->db->select('*');
        $this->db->from('em_user');
        $this->db->where('email',$email);
        $this->db->where('password',$password);
        $this->db->limit('30');
        $query=$this->db->get();
        $result=$query->result();
        

        【讨论】:

        • 请添加一些解释,说明您为什么认为答案解决了问题,以帮助未来的读者。谢谢。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-22
        • 2011-06-13
        • 2011-01-13
        • 1970-01-01
        • 2011-07-08
        相关资源
        最近更新 更多