【问题标题】:CodeIgniter sql query with limit and offset not showing results具有限制和偏移量的 CodeIgniter sql 查询未显示结果
【发布时间】:2017-09-22 03:01:36
【问题描述】:

我试图在搜索后从数据库中检索名称列表,由于搜索的性质,我必须使用自定义 sql 而不是默认的 codeigniter。 由于我需要进行分页,因此我必须使用动态限制和偏移量。但是,我发现它没有给我正确的结果。我已经在 mysql 中测试了这个查询并且它有效。我不确定我哪里出错了。请帮忙

我的模特:

public function count_search($id,$input){
        $sql = "SELECT * FROM contacts WHERE CONCAT_WS(' ', first_name, last_name) LIKE '%$input%'";
        $query = $this->db->query($sql);
        $count = $query->num_rows();
        if($count>0){
            return $count;
        }else{
            return 0;
        }
    }

public function search($limit,$start,$id,$input){
            $sql = "SELECT * FROM contacts WHERE CONCAT_WS(' ', first_name, last_name) LIKE '%$input%'";
            $query = $this->db->query($sql);
            if($query->num_rows()>0){
                foreach($query->result()as $row){
                    $contacts[] = $row;
                }
                return $contacts;
            }
            return false;
    }

【问题讨论】:

    标签: php mysql codeigniter


    【解决方案1】:

    我在最近的项目中遇到了同样的问题,只是调试同样的事情并在同一问题上花费了太多天,这让我抓狂。我从这个链接中读到了一个答案:Stackoverflow Answer 我检查了我的 $input 值,我发现它在 $input 字符串值中带有圆括号-->(),因为 LIKE 运算符没有在 codeignitor 中返回结果,并且相同的查询在 phpmyadmin 中可以流畅地工作。

    但是当我从字符串中删除圆括号时,它也在 codeignitor 中流畅地工作。您需要检查 $input 字符串是否包含太多特殊字符。

    【讨论】:

      【解决方案2】:

      试试这个。你忘了在查询中提到限制参数

      public function search($limit,$start,$id,$input){
              $sql = "SELECT * FROM contacts WHERE CONCAT_WS(' ', 
              first_name, last_name) LIKE '%$input%' Limit ".$start.",".$limit;
              $query = $this->db->query($sql);
              if($query->num_rows()>0){
                  foreach($query->result()as $row){
                      $contacts[] = $row;
                  }
                  return $contacts;
              }
              return false;
      }
      

      【讨论】:

      • 在 count_search 中使用相同的
      • 嗨!感谢回复。我试过了,但我得到了这个错误:你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 ''%grac% LIMIT 0,1' 附近使用正确的语法 SELECT * FROM contacts WHERE CONCAT_WS(' ', first_name, last_name) LIKE '%grac% LIMIT 0,1
      猜你喜欢
      • 2014-03-08
      • 2017-11-17
      • 2012-05-17
      • 2013-09-12
      • 2017-06-15
      • 2012-09-22
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      相关资源
      最近更新 更多