具有限制和偏移量的 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 查询未显示结果的主要内容,如果未能解决你的问题,请参考以下文章