下面代碼首先定義$where= '1=1',后面就可以不用去判斷是否存在$where;簡化了判斷流程;
1=1 是永恆成立的,意思無條件的成立,也就是說SQL語句中有沒有這個1=1都可以。
這個1=1常用於應用程序根據用戶選擇項的不同拼湊where條件時用的。
如果不寫1=1,那么在每一個不為空的查詢條件面前,都必須判斷有沒有where字句,哪里該加where,哪里該加and/or
用上 where 1=1 之后,就不存在這樣的問題, 條件是 and 就直接and ,是or就直接接 or
public function index() { $where = '1=1'; $searchArr = [];//記錄搜索狀態 if($this->request->isGet()){ $searchArr = $this->request->param(); unset($searchArr['page']); foreach ($searchArr as $k=>$v) { if($v != '' || $v != 0){ if($k == 'name'){ $where .= " and a.`{$k}` like '%{$v}%'"; }else if ($k== 'role_name'){ $where .= " and r.`name` like '%{$v}%'"; }else{ $where .= " and a.`{$k}` = '{$v}'"; } } } } }
文章來源:劉俊濤的博客歡迎關注公眾號、留言、評論,一起學習。
__________________________________________________________________________________
若有幫助到您,歡迎點擊推薦,您的支持是對我堅持最好的肯定(*^_^*)