【问题标题】:CodeIgniter 'where' not workingCodeIgniter“在哪里”不起作用
【发布时间】:2014-04-26 15:17:31
【问题描述】:

这是我做的一个搜索功能,它获取搜索词并显示正常。 HM_Jobs 有 3 个 JobStatus 选项: OpenAcceptedComplete

但是,当我运行它时,搜索还会从 AcceptedComplete 行中提取结果,为什么 WHERE 语句没有阻止这种情况发生?

function search_jobs($search) //This function checks a search term against the job title and description.
{
    $this->db->select('*');
    $this->db->from('HM_Jobs');
    $this->db->like('JobTitle',$search);
    $this->db->or_like('JobDescription',$search);
    $this->db->where('JobStatus','Open');  

    $query = $this->db->get();
    return $query->result(); 
}

【问题讨论】:

  • 尝试 echo $this->db->last_query() 查看您的查询

标签: php mysql sql codeigniter


【解决方案1】:

试试这个

 $this->db->select('*');
 $this->db->from('HM_Jobs');
 $this->db->where("(JobTitle LIKE '$search' OR JobDescription LIKE '$search')"  );
 $this->db->where('JobStatus','Open'); 
 $query = $this->db->get();

您可以使用echo $this->db->last_query()查看您的查询执行情况

您的查询创建类似

where JobTitle like 'search' or JobDescription  like 'search' and JobStatus='Open'

但是您需要的查询需要类似

  where (JobTitle like 'search' or JobDescription  like 'search') and JobStatus='Open'

【讨论】:

  • 得到这个错误:错误号:1054 'where 子句'中的未知列'asf' SELECT * FROM (HM_Jobs) WHERE (JobTitle LIKE asf OR JobDescription LIKE asf) AND JobStatus = '打开'行号:62
  • 对不起,我想念单曲
  • 最后一点:使用 $this->db->e​​scape_like_str() 转义输入。更多信息ellislab.com/codeigniter/user-guide/database/queries.html
【解决方案2】:

尝试使用以下查询

function search_jobs($search)
{
    $query = $this->db->select('*')
                  ->from('HM_Jobs')
                  ->where('JobStatus','Open')
                  ->where("(`JobTitle` LIKE '%$search%' OR 
                            `JobDescription` LIKE '%$search%')",null,false)
                  ->get();
    return $query->result(); 
}

【讨论】:

  • 给我以下错误:错误号:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 '%asf%' 附近使用的正确语法)和 JobStatus = 'Open'' 在第 3 行 SELECT * FROM (HM_Jobs) WHERE (JobTitle LIKE ' %asf% OR JobDescription LIKE '%asf%') AND JobStatus = '打开'
  • @user3574766 我已经编辑了我的答案。请立即查看
  • @user3574766 它应该可以工作,这是在分组条件下使用 where 子句的方法,我很好奇我猜你没有正确使用他的答案
猜你喜欢
  • 1970-01-01
  • 2014-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多