具有限制和偏移量的 CodeIgniter sql 查询未显示结果

Posted

技术标签:

【中文标题】具有限制和偏移量的 CodeIgniter sql 查询未显示结果【英文标题】:CodeIgniter sql query with limit and offset not showing results 【发布时间】: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;
    

【问题讨论】:

【参考方案1】:

我在最近的项目中遇到了同样的问题,只是调试同样的事情并在同一问题上花费了太多天,这让我抓狂。我从这个链接中读到了一个答案:*** 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

以上是关于具有限制和偏移量的 CodeIgniter sql 查询未显示结果的主要内容,如果未能解决你的问题,请参考以下文章

sql MS SQL分页具有偏移和限制2

sql 具有偏移和限制的MS SQL分页1

Codeigniter 限制和偏移分页不按降序工作

具有动态偏移量的 TSQL 复制 LAG() 函数

使用具有更高偏移量的 LAG 函数

在javascript中对具有偏移量的对象数组进行排序