【发布时间】:2018-08-20 10:06:58
【问题描述】:
我只想创建一个排序查询。当我添加where 子句时,什么也没发生。
应该发生的是,当$search_param['type'] 具有值时,它应该只输出在 sp_archive.SP_Type 中具有$search_param['type'] 的那个
下面是查询:
function search_data($search_param){
if(empty($search_param)){
return array();
}else{
$this->db->select("sp_archive.SP_ID, SP_TITLE, SP_RATIONALE, SP_File, GROUP_CONCAT(Tag.Tag_Name) As Tag");
$this->db->select("ad.Account_LastName AS ADLastName");
$this->db->select("ad.Account_FirstName AS ADFirstName");
$this->db->select("ad.Account_MiddleInitial AS ADMiddleInitial");
$this->db->select("a.Account_FirstName AS AFirstName");
$this->db->select("a.Account_MiddleInitial AS AMiddleInitial");
$this->db->select("a.Account_LastName AS ALastName");
$this->db->select("b.Account_FirstName AS BFirstName");
$this->db->select("b.Account_MiddleInitial AS BMiddleInitial");
$this->db->select("b.Account_LastName AS BLastName");
$this->db->select("c.Account_FirstName AS CFirstName");
$this->db->select("c.Account_MiddleInitial AS CMiddleInitial");
$this->db->select("c.Account_LastName AS CLastName");
$this->db->from("sp_archive");
$this->db->join('account ad', 'sp_archive.Adviser = ad.Account_ID','left');
$this->db->join('account a', 'sp_archive.Proponent_A = a.Account_ID','left');
$this->db->join('account b', 'sp_archive.Proponent_B = b.Account_ID','left');
$this->db->join('account c', 'sp_archive.Proponent_C = c.Account_ID','left');
$this->db->join('tag', 'sp_archive.SP_ID = tag.SP_ID', 'inner');
$this->db->where('sp_archive.SP_Type', array($search_param['type1'], $search_param['type2'],$search_param['type3'],$search_param['type4']));
$this->db->like("SP_TITLE", $search_param['search']);
$this->db->or_like("ad.Account_LastName", $search_param['search']);
$this->db->or_like("ad.Account_FirstName", $search_param['search']);
$this->db->or_like("a.Account_LastName", $search_param['search']);
$this->db->or_like("a.Account_FirstName", $search_param['search']);
$this->db->or_like("c.Account_LastName", $search_param['search']);
$this->db->or_like("c.Account_FirstName", $search_param['search']);
$this->db->or_like("c.Account_LastName", $search_param['search']);
$this->db->or_like("c.Account_FirstName", $search_param['search']);
$this->db->group_by("sp_archive.SP_ID");
$query = $this->db->get();
return $query;
}
【问题讨论】:
-
您应该直接在问题中包含您的 PHP 代码,但我的第一个问题可能是您确定这个
WHERE子句应该对询问?也许它只是没有影响任何记录,或者你没有正确编码。 -
我认为在选择之后。因为 Where 子句将根据您的条件过滤您的数据,然后需要更少的行来过滤您的结果
-
like 查询覆盖你的 where 行为,在开始 like 查询之前添加
$this->db->group_start();,最后添加`$this->db->group_end();` -
我认为您正在寻找
where_in函数以允许多个查询?而不是where -
哦!,我只是在我的代码中发现了错误。我没有像
search_param['type1']这样传递查询所需的变量,我应该使用where_in()作为 where 子句
标签: mysql codeigniter codeigniter-3