# 查詢條件(WHERE)
查詢的限制條件,在select()、get()、update()、delete()等一系列方法中都會使用到。
限制條件是一個多維數組,常規情況這個條件數組是放到方法的第三個參數上。如果有表鏈接的情況則是第四個參數。
>[warning] 在PHP版本大于等于5.4時,支持數組支持[]寫法,如果您使用的PHP5.3及其以下版本請替換為array()寫法。
<br/><br/>
## 單一條件判斷
適用查詢只需要設置一個條件的情況。
~~~
public function getdata(){
$db = DB(); //實例化數據庫操作類
//條件:check字段等于1的數據
$list = $db->select('users','*',['check' => 1]);
//條件:user_id字段值等于50的數據
$list = $db->select('users','*',['user_id' => 50]);
$user = $db->get('users','*',['user_id' => 50]);
//條件:user_id字段值等于50,51,60,61的數據
$list = $db->select('users','*',[ 'user_id' => [50,51,60,61] ]);
//條件:user_id字段值大于50的數據
$list = $db->select('users','*',['user_id[>]' => 50]);
//條件:user_id字段值小于50的數據
$list = $db->select('users','*',['user_id[<]' => 50]);
//條件:user_id字段值不等于50的數據
$list = $db->select('users','*',['user_id[!]' => 50]);
//條件:user_id字段值大于等于50的數據
$list = $db->select('users','*',['user_id[>=]' => 50]);
//條件:user_id字段值小于等于50的數據
$list = $db->select('users','*',['user_id[<=]' => 50]);
//條件:user_id字段值在50至90之間的數據
$list = $db->select('users','*',[ 'user_id[<>]' => [50,90] ]);
//條件:user_id字段值不介于50至90之間的數據
$list = $db->select('users','*',[ 'user_id[><]' => [50,90] ]);
}
~~~
<br/><br/>
## 復合條件判斷
適用查詢只需要設置多個條件之間需要 AND 和 OR 操作時的情況。
此時注意的是,需要把條件名AND 或者 OR 作為鍵名,而鍵值是復合鍵名操作的條件數組。
~~~
public function getdata(){
$db = DB(); //實例化數據庫操作類
//條件:審核=1 并且 用戶組ID=2 并且 年齡>20 的數據
$list = $db->select('users','*',[
'AND' => [
'check'=>1,
'group_id'=>2,
'age[>]'=>20
]
]);
//條件:用戶名=jerry 或 郵箱=jerry@qq.com 或 手機=13166668888 的數據
$user = $db->get('users','*',[
'OR' => [
'user_name'=>'jerry',
'user_email'=>'jerry@qq.com',
'user_mob'=>'13166668888'
]
]);
//條件:查找2個用戶,
//第一個用戶條件是 用戶名=tom 或 郵箱=tom@qq.com,
//第二個用戶條件是 用戶名=jerry 或 郵箱=jerry@qq.com 。
$list = $db->select('users','*',[
'AND' => [
'OR'=> [
'user_name'=>'tom',
'user_email'=>'tom@qq.com'
],
'OR'=> [
'user_name'=>'jerry',
'user_email'=>'jerry@qq.com'
]
]
]);
}
~~~
>[warning] 因為是以數組方式傳遞參數,所以不能出現復合條件鍵名重復出現的情況。
比如 [ 'AND'=>['id'=>1],'AND'=>['cid'=>2] ] 這是錯誤的;
比如 [ 'AND'=>['id'=>1], 'OR'=>['cid'=>2] ] 這是錯誤的;
<br/><br/>