2016-12-31 90 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(); 
     } 
    }