【问题标题】:Please tell me what's wrong in my sql query?请告诉我我的 sql 查询有什么问题?
【发布时间】:2011-12-28 18:23:29
【问题描述】:

我正在 codeigniter 中创建一个应用程序。我正在创建从数据库中搜索教程的功能。但我收到错误。请检查我的代码。

    function get_tuts($query, $limit, $offset) {

    $offset = 0;
    $sql = "SELECT * FROM tutorials WHERE  MATCH ( title, desc ) AGAINST (?) LIMIT ? OFFSET ?"; 
    $q = $this->db->query($sql, array($query, $limit, $offset));

    if($q->num_rows() > 0){
                foreach($row->result() as $row){
                    $data[] = $row;
                }
            }
            return $data;
}

但我收到此错误

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc ) AGAINST ('yahoo') LIMIT 10 OFFSET 0' at line 1

【问题讨论】:

  • 您的输入中是否有杂散的 '?清理您的数据库输入或冒着被小鲍比表激怒的风险。
  • @Matten 我正在使用 MySQL
  • @asawyer:CodeIgniter 以这种方式自动转义查询。 codeigniter.com/user_guide/database/queries.html

标签: mysql sql codeigniter


【解决方案1】:

desc这个词是mysql中的保留字。尝试用反引号 ` 包围列名。

【讨论】:

    【解决方案2】:

    desc 是保留字。将`添加到描述中:

    $sql = "SELECT * FROM tutorials WHERE  MATCH ( title, `desc` ) AGAINST (?) LIMIT ? OFFSET ?"; 
    

    【讨论】:

      【解决方案3】:

      您收到的错误消息表明desc 是 MySql 中的保留关键字。

      use near 'desc ) AGAINST ('yahoo') LIMIT 10 OFFSET 0' at line 1
      

      【讨论】:

        猜你喜欢
        • 2016-03-09
        • 1970-01-01
        • 2018-05-15
        • 1970-01-01
        • 2022-06-15
        • 2015-07-09
        • 1970-01-01
        • 2011-09-03
        • 2010-12-23
        相关资源
        最近更新 更多