>[danger] where 條件設計稍微有點復雜,所以單獨拿出來
>多數情況下使用數組參數即可滿足要求
>在實現復雜的where條件時,如果數組參數滿足不了要求,可以使用字符串參數
>字符串參數 框架將不做解析,直接交給PDO處理
>在書寫字符串參數時應盡量遵循SQL的書寫規范
## 基本操作
$where['id'] = 10; // where `id`=10; 等于
$where['id >'] = 10; // where `id`>10; 大于
$where['id <'] = 10; //where `id`<10; 小于
$where['id >='] = 10; //where `id`>=10; 大于等于
$where['id <='] = 10; //where `id`<=10; 小于等于
$where['id <>'] = 10; //where `id`<>10; 不等于
**IN 和 NOT IN**
$where['id'] = [2,4,6,8]; //where `id` IN(2,4,6,8);
$where['id'] = ['IN',[2,4,6,8]]; //同上 指定操作符是'IN'
$where['id'] = ['NOT IN',[2,4,6,8]]; //where `id` NOT IN(2,4,6,8)
**BETWEEN 和 NOT BETWEEN**
$where['id'] = ['BETWEEN',[1,10]] //WHERE `id` BETWEEN 1 AND 10
$where['id'] = ['NOT BETWEEN',[1,10]] //WHERE `id` NOT BETWEEN 1 AND 10
**LIKE**
$where['name'] = ['LIKE','tom'] //WHERE `name` LIKE %tom%
$where['name'] = '%tom%' //WHERE `name` LIKE %tom%
**多個字段對應同一個值的情況:**
$where['id|uid'] = 10; //where `id`=10 OR `uid`=10
## 連接多個條件
**默認使用 AND 連接多個條件**
$where['id >'] = 10;
$where['pot >'] = 100;
//...更多
where `id`>10 AND `pot`>100 AND ...更多 //合并后的條件
**OR**
$where['id >'] = 10;
$where['pid <'] = ['OR',20];
WHERE `id`>10 OR `pid`<20 //合并后的語句
也可以這么寫:
$where['OR pid <'] = 20;
也可以寫在一個數組里面
$where = ['id >'=>10,'OR pid <'=>20];
>[danger]where條件可以多次調用以應對稍微復雜一點的條件
$m = D('user');
$where1 = ['id >'=>10,'OR pot >'=>100];
$where2 = ['OR pid <'=> 20];
$user = $m->where($where1)->where($where2)->select();
//兩次調用where()函數合并之后的 where 條件:
WHERE (`id `>10 OR `pot `>100) OR (`pid`<20)
## 使用字符串參數
**框架不做解析,也不綁定參數,需注意語句安全**
$where = "`id`>10 AND `pot`>100";
**綁定參數的方式:**
$m = D('user');
$where = "`id`>:id AND `pot`>:pot"; //將參數綁定到 :id 和 :pot 上
$arr = [':id'=>10,':pot'=>100]; //給綁定參數賦值
$user = $m->where($where,$arr)->select(); //$arr作為第二個參數傳入where函數