ThinkPHP CURD方法盘点:where方法
今天来给大家讲下查询最常用但也是最复杂的where方法,where方法也属于模型类的连贯操作方法之一,主要用于查询和操作条件的设置。
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
如果使用3.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语法 |
示例如下:
EQ :等于(=)
例如:
$map['id'] = array('eq',100);
和下面的查询等效
$map['id'] = 100;
表示的查询条件就是 id = 100
NEQ: 不等于(<>)
例如:
$map['id'] = array('neq',100);
表示的查询条件就是 id <> 100
GT:大于(>)
例如:
$map['id'] = array('gt',100);
表示的查询条件就是 id > 100
EGT:大于等于(>=)
例如:
$map['id'] = array('egt',100);
表示的查询条件就是 id >= 100
LT:小于(<)
例如:
$map['id'] = array('lt',100);
表示的查询条件就是 id < 100
ELT: 小于等于(<=)
例如:
$map['id'] = array('elt',100);
表示的查询条件就是 id <= 100
[NOT] LIKE: 同sql的LIKE
例如:
$map['name'] = array('like','thinkphp%');
查询条件就变成 name like 'thinkphp%'
如果配置了DB_LIKE_FIELDS参数的话,某些字段也会自动进行模糊查询。例如设置了:
'DB_LIKE_FIELDS'=>'title|content'
的话,使用
$map['title'] = 'thinkphp';
查询条件就会变成 name like '%thinkphp%'
支持数组方式,例如
via:http://www.thinkphp.cn/document/314.html
ThinkPHP CURD方法盘点:where方法的更多相关文章
- Thinkphp CURD中的where方法
今天来给大家讲下查询最常用但也是最复杂的where方法,where方法也属于模型类的连贯操作方法之一,主要用于查询和操作条件的设置.where方法的用法是ThinkPHP查询语言的精髓,也是Think ...
- ThinkPHP CURD方法盘点:field方法
ThinkPHP的CURD操作中有很多非常实用的方法,从这篇开始,我们会为大家一一介绍. 首先为大家介绍下field方法的用法.field属于模型的连贯操作方法之一,主要目的是标识要返回或者操作的字段 ...
- ThinkPHP CURD方法中field方法详解
导读:ThinkPHP CURD方法的field方法属于模型的连贯操作方法之一,主要目的是标识要返回或者操作的字段,可以用于查询和写入操作. 1.用于查询在查询操作中field方法是使用最频繁的.$M ...
- ThinkPHP 数据库操作(三) : 查询方法、查询语法、链式操作
查询方法 条件查询方法 where 方法 可以使用 where 方法进行 AND 条件查询: Db::table('think_user') ->where('name','like','%th ...
- 2016/05/23 thinkphp M方法和D方法的区别
M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 ...
- thinkPHP实现静态页的方法-buildHtml
thinkphp全站静态页实现方法! 1:在根目录下的全局index.php中加下面这行: define('HTML_PATH', './htm');//生成静态页面的文件位置 2:在项目的配置文件c ...
- thinkPHP实现瀑布流的方法
thinkPHP实现瀑布流的方法 文章TAG:thinkphp 瀑布流 时间:2014-11-29来源:www.aspku.com 作者:源码库 文章热度: 131 ℃ 过期已备案域名,注册就能用!终 ...
- (转) ThinkPHP模板自定义标签使用方法
这篇文章主要介绍了ThinkPHP模板自定义标签使用方法,需要的朋友可以参考下 转之--http://www.jb51.net/article/51584.htm 使用模板标签可以让网站前台开发 ...
- sqlplus命令行登录oracle数据库的N种方法盘点
欢迎访问我的个人博客IT废柴,本文永久链接移至:sqlplus命令行登录oracle数据库的N种方法盘点 sqlplus有几种登陆方式Oracle数据库, 比如: 1.以操作系统权限认证的oracle ...
随机推荐
- Windows使用virtualenv搭建flask开发环境
virtualenv: VirtualEnv用于在一台机器上创建多个独立的Python虚拟运行环境,多个Python环境相互独立,互不影响,它能够: 在没有权限的情况下安装新套件 不同应用可以使用不同 ...
- Grunt 初体验
对于没有接触过类似自动化工具的朋友,对 grunt 也许只是停留在听过阶段,而并没有真正的使用过.今天就从最初级的教程说起.在开始教程之前,需要先确保你已经安装了 node. 下面就开始来讲解 gru ...
- myhuiban会议,期刊,科研人员,计算机类会议大全
http://www.myhuiban.com/ List of computer science conferences From Wikipedia, the free encyclopedia ...
- bzoj1453
这是一道好题,按行建线段树,每个点维护上下边界的连通性,详细见代码注释 网上写法不一,自认为比较简单,就放出来相出来献丑吧 ..,..] of longint; //u[]上边界,d[]下边界 s,f ...
- Highcharts20151130
$(function () { $('#container').highcharts({ chart: { type: 'spline' // 图的类型 }, title: { text: null ...
- 卸载sqlserver数据库参考
这多半是以前安装过MSSQL,没卸载干净导致的. 解决方法如下: 一.先把MSSQL卸载干净 1.在添加删除程序中把SQL Server卸载 :2.把Microsoft SQL Server文件夹整个 ...
- OpenGL学习之路(五)
1 引子 不知不觉我们已经进入到读书笔记(五)了,我们先对前四次读书笔记做一个总结.前四次读书笔记主要是学习了如何使用OpenGL来绘制几何图形(包括二维几何体和三维几何体),并学习了平移.旋转.缩放 ...
- SQL注入攻击的种类和防范手段
观察近来的一些安全事件及其后果,安全专家们已经得到一个结论,这些威胁主要是通过SQL注入造成的.虽然前面有许多文章讨论了SQL注入,但今天所讨论的内容也许可帮助你检查自己的服务器,并采取相应防范措施. ...
- HDU 5700 区间交 线段树暴力
枚举左端点,然后在线段树内,更新所有左边界小于当前点的区间的右端点,然后查线段树二分查第k大就好 #include <cstdio> #include <cstring> #i ...
- HDU4612 Warm up 边双(重边)缩点+树的直径
题意:一个连通无向图,问你增加一条边后,让原图桥边最少 分析:先边双缩点,因为连通,所以消环变树,每一个树边都是桥,现在让你增加一条边,让桥变少(即形成环) 所以我们选择一条树上最长的路径,连接两端, ...