CodeIgniter sql查询,限制和偏移不显示结果

时间:2017-04-25 08:00:46

标签: php mysql codeigniter

我试图在搜索后从数据库中检索名称列表,并且由于搜索的性质,我必须使用自定义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;
    }

2 个答案:

答案 0 :(得分:0)

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

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;
}

答案 1 :(得分:0)

我在最近的项目中遇到了同样的问题,仅仅调试同一件事就使我发疯,并且在同一问题上花费了太多时间。我从此链接中读到一个答案:Stackoverflow Answer 我检查了我的$ input值,发现它在$ input字符串值中带有圆括号->(),因为LIKE运算符未在codeignitor中返回结果,并且同样的查询在phpmyadmin中也很流畅。

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