# 查询条件(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/>