当前位置:K88软件开发文章中心网站服务器框架ThinkPHP → 文章内容

WHERE

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-26 15:32:32

由 AdairSweet 创建, 最后一次修改 2016-02-24 where方法的用法是ThinkPHP查询语言的精髓,也是ThinkPHP ORM的重要组成部分和亮点所在,可以完成包括普通查询、表达式查询、快捷查询、区间查询、组合查询在内的查询操作。where方法的参数支持字符串和数组,虽然也可以使用对象但并不建议。字符串条件使用字符串条件直接查询和操作,例如:$User = M("User"); // 实例化User对象$User->where('type=1 AND status=1')->select(); 最后生成的SQL语句是SELECT * FROM think_user WHERE type=1 AND status=1使用字符串条件的时候,建议配合预处理机制,确保更加安全,例如:$Model->where("id=%d and username='%s' and xx='%f'",array($id,$username,$xx))->select();或者使用:$Model->where("id=%d and username='%s' and xx='%f'",$id,$username,$xx)->select();如果$id变量来自用户提交或者URL地址的话,如果传入的是非数字类型,则会强制格式化为数字格式后进行查询操作。字符串预处理格式类型支持指定数字、字符串等,具体可以参考vsprintf方法的参数说明。数组条件数组条件的where用法是ThinkPHP推荐的用法。普通查询最简单的数组查询方式如下:$User = M("User"); // 实例化User对象$map['name'] = 'thinkphp';$map['status'] = 1;// 把查询条件传入查询方法$User->where($map)->select(); 最后生成的SQL语句是SELECT * FROM think_user WHERE `name`='thinkphp' AND status=1表达式查询上面的查询条件仅仅是一个简单的相等判断,可以使用查询表达式支持更多的SQL查询语法,查询表达式的使用格式:$map['字段1'] = array('表达式','查询条件1');$map['字段2'] = array('表达式','查询条件2');$Model->where($map)->select(); // 也支持表达式不分大小写,支持的查询表达式有下面几种,分别表示的含义是:表达式含义EQ等于(=)NEQ不等于(<>)GT大于(>)EGT大于等于(>=)LT小于(<)ELT小于等于(<=)LIKE模糊查询[NOT] BETWEEN(不在)区间查询[NOT] IN(不在)IN 查询EXP表达式查询,支持SQL语法多次调用where方法支持多次调用,但字符串条件只能出现一次,例如:$map['a'] = array('gt',1);$where['b'] = 1;$Model->where($map)->where($where)->where('status=1')->select();多次的数组条件表达式会最终合并,但字符串条件则只支持一次。更多的查询用法,可以参考查询语言部分。

WHERE