thinkPHP的表达式查询用法详解


Posted in PHP onSeptember 14, 2016

本文实例讲述了thinkPHP的表达式查询。分享给大家供大家参考,具体如下:

ThinkPHP 表达式

这里说的表达式,是指 ThinkPHP 框架中特有的表达式。这些表达式用于查询或更新删除等操作的 where条件 及模板标签中。

Where 条件中使用表达式

Where 条件表达式格式为:

$map['字段名']  = array('表达式', '操作条件');

其中 $map 是一个普通的数组变量,可以根据自己需求而命名。上述格式中的表达式实际是运算符的意义:

ThinkPHP运算符 与 SQL运算符 对照表
TP运算符 SQL运算符 例子 实际查询条件
eq = $map['id'] = array('eq',100); 等效于:$map['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
elt $map['id'] = array('elt',100); id
like like $map['username'] = array('like','Admin%'); username like 'Admin%'
between between and $map['id'] = array('between','1,8'); id BETWEEN 1 AND 8
not between not between and $map['id'] = array('not between','1,8'); id NOT BETWEEN 1 AND 8
in in $map['id'] = array('in','1,5,8'); id in(1,5,8)
not in not in $map['id'] = array('not in','1,5,8'); id not in(1,5,8)
and(默认) and $map['id'] = array(array('gt',1),array('lt',10)); (id > 1) AND (id
or or $map['id'] = array(array('gt',3),array('lt',10), 'or'); (id > 3) OR (id
xor(异或) xor 两个输入中只有一个是true时,结果为true,否则为false,例子略。 1 xor 1 = 0
exp 综合表达式 $map['id'] = array('exp','in(1,3,8)'); $map['id'] = array('in','1,3,8');

补充说明

同 SQL 一样,ThinkPHP运算符不区分大小写,eq 与 EQ 一样。

between、 in 条件支持字符串或者数组,即下面两种写法是等效的:

$map['id'] = array('not in','1,5,8');
$map['id'] = array('not in',array('1','5','8'));

exp 表达式

上表中的 exp 不是一个运算符,而是一个综合表达式以支持更复杂的条件设置。exp 的操作条件不会被当成字符串,可以使用任何 SQL 支持的语法,包括使用函数和字段名称。

exp 不仅用于 where 条件,也可以用于数据更新,如:

$Dao = M("Article");
// 构建 save 的数据数组,文章点击数+1
$data['aid'] = 10;
$data['counter'] = array('exp','counter+1');
// 根据条件保存修改的数据
$User->save($data);

注:对于数字字段的加减,可以直接使

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
一篇入门的php Class 文章
Apr 04 PHP
中国站长站 For Dede4.0 采集规则
May 27 PHP
php md5下16位和32位的实现代码
Apr 09 PHP
flash用php连接数据库的代码
Apr 21 PHP
php生成shtml类用法实例
Dec 09 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
Jul 07 PHP
php删除数组指定元素实现代码
May 03 PHP
PHP实现的分页类定义与用法示例
Jul 05 PHP
深入理解PHP中mt_rand()随机数的安全
Oct 12 PHP
PDO::commit讲解
Jan 27 PHP
PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
Jun 08 PHP
PHP实现创建以太坊钱包转账等功能
Apr 21 PHP
PHP实现对二维数组某个键排序的方法
Sep 14 #PHP
Laravel+jQuery实现AJAX分页效果
Sep 14 #PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
Sep 14 #PHP
PHP自定义函数实现格式化秒的方法
Sep 14 #PHP
PHP经典算法集锦【经典收藏】
Sep 14 #PHP
微信支付的开发流程详解
Sep 13 #PHP
PHP仿微信多图片预览上传实例代码
Sep 13 #PHP
You might like
如何利用php array_multisort函数 对数据库结果进行复杂排序
2013/06/08 PHP
php编写的一个E-mail验证类
2015/03/25 PHP
PHP中返回引用类型的方法
2015/04/03 PHP
基于laravel-admin 后台 列表标签背景的使用方法
2019/10/03 PHP
地址栏上的一段语句,改变页面的风格。(教程)
2008/04/02 Javascript
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
2010/12/08 Javascript
JQuery1.6 使用方法三
2011/11/23 Javascript
Javascript学习笔记之 函数篇(二) : this 的工作机制
2014/06/24 Javascript
JavaScript中跨域调用Flash的方法
2014/08/11 Javascript
javascript实现手机震动API代码
2015/08/05 Javascript
JS函数定义方式的区别介绍
2016/03/22 Javascript
使用伪命名空间封装保护独自创建的对象方法
2016/08/04 Javascript
webpack 4.0.0-beta.0版本新特性介绍
2018/02/10 Javascript
微信小程序和H5页面间相互跳转代码实例
2019/09/19 Javascript
在SSM框架下用laypage和ajax实现分页和数据交互的方法
2019/09/27 Javascript
html-webpack-plugin修改页面的title的方法
2020/06/18 Javascript
[44:01]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS paiN
2018/03/31 DOTA
[06:07]DOTA2-DPC中国联赛3月5日Recap集锦
2021/03/11 DOTA
Python 自动安装 Rising 杀毒软件
2009/04/24 Python
windows系统下Python环境搭建教程
2017/03/28 Python
python flask实现分页效果
2017/06/27 Python
Python subprocess模块详细解读
2018/01/29 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
2018/05/24 Python
python制作mysql数据迁移脚本
2019/01/01 Python
Flask模板引擎之Jinja2语法介绍
2019/06/26 Python
如何在Cloud Studio上执行Python代码?
2019/08/09 Python
详解Python3迁移接口变化采坑记
2019/10/11 Python
python cv2读取rtsp实时码流按时生成连续视频文件方式
2019/12/25 Python
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
HomeAway澳大利亚:预订你的度假屋,公寓、度假村、别墅等
2019/02/20 全球购物
自行车租赁公司创业计划书
2014/01/28 职场文书
革命英雄事迹演讲稿
2014/09/13 职场文书
2014年服务员工作总结
2014/11/18 职场文书
保护环境建议书作文500字
2015/09/14 职场文书
2016年党员创先争优公开承诺书
2016/03/25 职场文书
Mongodb 迁移数据块的流程介绍分析
2022/04/18 MongoDB