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的控制语句
Oct 09 PHP
PHP性能优化 产生高度优化代码
Jul 22 PHP
利用PHP生成静态HTML文档的原理
Oct 29 PHP
php输出1000以内质数(素数)示例
Feb 16 PHP
PHP数组相关函数汇总
Mar 24 PHP
PHP获取当前日期和时间及格式化方法参数
May 11 PHP
给WordPress中的留言加上楼层号的PHP代码实例
Dec 14 PHP
php版微信自动获取收货地址api用法示例
Sep 22 PHP
php用户密码加密算法分析【Discuz加密算法】
Oct 12 PHP
php mysql操作mysql_connect连接数据库实例详解
Dec 26 PHP
深入理解PHP中mt_rand()随机数的安全
Oct 12 PHP
阿里云服务器搭建Php+Apache运行环境的详细过程
May 15 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实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
php+mysqli使用面向对象方式查询数据库实例
2015/01/29 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案
2018/10/14 PHP
点图片上一页下一页翻页效果
2008/07/09 Javascript
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
javascript一元操作符(递增、递减)使用示例
2013/08/07 Javascript
javascript自启动函数的问题探讨
2013/10/05 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
2014/06/24 Javascript
JQuery中使用on方法绑定hover事件实例
2014/12/09 Javascript
node.js中的querystring.escape方法使用说明
2014/12/10 Javascript
JS实现文字掉落效果的方法
2015/05/06 Javascript
HTML5使用DeviceOrientation实现摇一摇功能
2015/06/05 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
基于jquery编写分页插件
2016/03/07 Javascript
jQuery过滤选择器用法示例
2016/09/12 Javascript
用jQuery旋转插件jqueryrotate制作转盘抽奖
2017/02/10 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
JS实现的简单拖拽购物车功能示例【附源码下载】
2018/01/03 Javascript
深入理解nodejs搭建静态服务器(实现命令行)
2019/02/05 NodeJs
利用Python开发微信支付的注意事项
2016/08/19 Python
Python中matplotlib中文乱码解决办法
2017/05/12 Python
Python利用递归和walk()遍历目录文件的方法示例
2017/07/14 Python
python使用sqlite3时游标使用方法
2018/03/13 Python
Python一键安装全部依赖包的方法
2019/08/12 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
python编程的核心知识点总结
2021/02/08 Python
欧洲第一的摇滚和金属乐队服装网站:EMP
2017/10/26 全球购物
试解释COMMIT操作和ROLLBACK操作的语义
2014/07/25 面试题
现代化办公人员工作的自我评价
2013/10/16 职场文书
母亲节演讲稿范文
2014/01/02 职场文书
党员学习十八大感想
2014/01/17 职场文书
大学学生个人总结
2015/02/15 职场文书
详解Java实践之抽象工厂模式
2021/06/18 Java/Android
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python