2016-12-31 92 views
1

我试图为我的网站实现一个搜索框。在我的用户帐户表中,我将这些帐户分为三部分,即房主,管理员和停用用户。我希望搜索功能能够搜索多个列(按用户名,名字,姓氏,地址,名字和姓氏的组合进行搜索)。但是在我的模型中,我的WHERE子句似乎被忽略。在我的search_homeowner函数中,我将结果限制为只显示房主,但是我得到的结果显示了管理员的结果。我似乎无法拥有多个LIKE,所以我尝试了或者像。这是代码。多个Like子句Codeigniter

型号:

function search_homeowner($searchquery) { 

    $this->db->select('*')->from('accounts')->where('role', 0)-> where('isActive', 1); 
    $this->db->like('firstname',$searchquery,'after'); 
    $this->db->or_like('lastname',$searchquery,'after'); 
    $this->db->or_like('username',$searchquery,'after'); 
    $this->db->or_like('address',$searchquery,'after'); 

    $query = $this->db->get(); 
    if($query->num_rows() > 0) { 
     return $query->result(); 
    } else { 
     return $query->result(); 
    } 
} 

控制器:

function search_homeowner() { 
    $this->load->model('model_accounts'); 
    $searchquery = $this->input->post('search'); 

    if(isset($searchquery) and !empty($searchquery)) { 
     $data['users'] = $this->model_accounts->search_homeowner($searchquery); 
     $data['main_content'] = 'view_adminaccounts'; 
     $data['homeownerlinks']=''; 
     $this->load->view('includes/admin_accounts_template', $data); 
    } else { 
     redirect('admin_accounts/homeowner'); 
    } 
} 

enter image description here enter image description here

回答

0
use this query hope it will help for you. 

$whereaccounts=array('role'=>0,'isActive'=>1); 
$this->db->select('*')->from('accounts')->where($whereaccounts); 
$this->db->where('firstname', 'LIKE', '%' . $searchquery . '%'); 
$this->db->where('lastname', 'LIKE', '%' . $searchquery . '%'); 
$this->db->where('username', 'LIKE', '%' . $searchquery . '%'); 
$this->db->where('address', 'LIKE', '%' . $searchquery . '%'); 
$query = $this->db->get(); 
+0

您好感谢您的回答,但是当我按下搜索按钮,现在它不显示任何记录 – coderszx

+0

保持的print_r($这个 - > DB-> last_query); $ query = $ this-> db-> get();这一行,你会得到查询检查一次,并在数据库中执行,一旦你将获得其中的错误是怎么回事exacty .. – Sona

+0

现在来看,它会显示'SELECT * FROM“账户” WHERE“角色” = 0 AND'isActive = 1 AND'firstname'='LIKE'AND'lastname'='LIKE'AND'username'='LIKE'AND'address'='LIKE''。该'$ searchquery'似乎不读 – coderszx

0

您使用后其为打印 “searchString的%” 的or_like CI法。如果你删除它,将会像这样打印“%searchstring%”。所以,请尝试这样

function search_homeowner($searchquery) { 
     $this->db->select('*')->from('accounts')->where('role', 0)-> where('isActive', 1); 
     $this->db->like('firstname',$searchquery); 
     $this->db->or_like('lastname',$searchquery); 
     $this->db->or_like('username',$searchquery); 
     $this->db->or_like('address',$searchquery); 

     $query = $this->db->get(); 
     if($query->num_rows() > 0) { 
      return $query->result(); 
     } else { 
      return $query->result(); 
     } 
    }