## 查询语言
TookPHP框架通过 where 方法操作 SQL 条件,可以指定多种参数类型作为查询条件。
**当数组为参数时会过滤非法字段(建议用数组作为查询条件)**
~~~
//使用字符串做为条件
$db->where('id>1 and id<100')->all();
//生成SQL: SELECT * FROM tb_news WHERE id>1 and id<100
~~~
~~~
//使用数组做为查询条件
$map['title'] = '标题';
$map['nid'] = '100';
$map['_logic'] = 'OR';
$db->where($map)->all();
//得到的查询条件是:title ='标题' OR nid ='100'
~~~
~~~
使用数组做为参数
$map[]='id>100 ';
$map[]='title like "%关键词%"';
$map['_logic']='OR';
//得到的查询条件是:id>100 OR title like '%关键词%'
//条件字符串后可以加 OR、AND、XOR 等,如果不加时默认使用 AND 做为连接
~~~
## 链式操作
~~~
$db->where("title like '%关键词%'")->where("id>2")->all();
//查询语句是:SELECT * FROM tb_content WHERE title like '%关键词%' AND id>2
~~~
## 表达式查询
| 表达式 | 含义 |
| -- | -- |
| EQ | 等于(=) |
| NEQ | 不等于(<>) |
| GT | 大于 (>) |
| EGT | 大于等于 |
| LT | 小于 |
| ELT | 小于等于 |
| [NOT] LIKE | 模糊查询 |
| [NOT] IN | ( 不在 ) IN 查询 |
| [NOT] BETWEEN | ( 不在 ) 区间查询 |
| EXP | 表达式查询 |
~~~
//EQ: 等于 (=)
$map['id'] = array('eq', 1)
//得到的查询条件是: id =1
~~~
~~~
//NEQ: 等于 (<>)
$map['id'] = array('neq', 1)
//得到的查询条件是: id <>1
~~~
~~~
//GT: 等于 (>)
$map['id'] = array('gt', 1)
//查询语句: SELECT * FROM tb_news WHERE id >1
~~~
~~~
//EGT: 等于 (>=)
$map['id'] = array('egt', 1)
//得到的查询条件是: id >=1
~~~
~~~
//LT: 等于 (
$map['id'] = array('lt', 1);
//得到的查询条件是:id <=1
~~~
~~~
//ELT: 等于 (<=)
$map['id'] = array('egt', 1)
//得到的查询条件是:id <=1
~~~
~~~
//[NOT]like: 同 SQL 中的 LIKE
$map['title'] = array('like' , '%关键词%');
//得到的查询条件是:title LIKE '%关键词%'
~~~
~~~
$map['title'] = array('like' , array('%关键词1%', '关键词2%'),'OR');
//得到的查询条件是:title LIKE '%关键词1%' OR title LIKE '关键词2%'
~~~
~~~
//[NOT]BETWEEN: 同 sql 的 [not]between
$map['nid'] = array('between' , '1,2');
//$map['nid'] = array('between' , array(1,2));
//得到的查询条件是:nid BETWEEN 1 AND 2
~~~
~~~
//[NOT]IN: 同 sql 的 [not]in
$map['id'] = array('in' , array(1,2));
//得到的查询条件是:id IN (1,2)
~~~
~~~
//EXP: 表达式
$map['title'] = array('exp' , " like '%关键词%'");
//得到的查询条件是:title like '%关键词%'
~~~
~~~
//模糊查询
$map['_string'] = "uid>1 or username = 'admin'";
//得到的查询条件是:uid>1 or username = 'admin'
~~~
~~~
//请求字符串查询
$map['_query']="nid=1&title=关键词&_logic=OR";
//得到的查询条件是:nid ='1' OR title ='关键词'
~~~
~~~
//区间查询
$map['uid'] = array(array('gt', 3), array('lt', 5), 'AND');
//得到的查询条件是:uid >3 AND uid <5 ,最后一个可以为 OR、AND、XOR 如果不写默认为 AND
~~~