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将数据导入到Foxmail
Oct 09 PHP
PHP操作数组的一些函数整理介绍
Jul 17 PHP
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
Aug 04 PHP
PHP使用静态方法的几个注意事项
Sep 16 PHP
20个2014年最优秀的PHP框架回顾
Oct 22 PHP
php表单提交实例讲解
Nov 12 PHP
修改WordPress中文章编辑器的样式的方法详解
Dec 15 PHP
PHP培训要多少钱
Jun 06 PHP
PHP实现基于3DES算法加密解密字符串示例
Aug 24 PHP
laravel清除视图缓存的代码
Oct 23 PHP
PHP解决高并发问题
Apr 01 PHP
详解PHP服务器如何在有限的资源里最大提升并发能力
May 25 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
资料注册后发信小技巧
2006/10/09 PHP
Session的工作方式
2006/10/09 PHP
PHP读取文件并可支持远程文件的代码分享
2012/10/03 PHP
PHP 动态生成静态HTML页面示例代码
2014/01/15 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
2016/03/18 PHP
Gambit vs CL BO3 第二场 2.13
2021/03/10 DOTA
js类 from qq
2006/11/13 Javascript
ASP SQL防注入的方法
2008/12/25 Javascript
获取dom元素那些讨厌的位置封装代码
2010/06/23 Javascript
js 动态为textbox添加下拉框数据源的方法
2014/04/24 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
快速学习JavaScript的6个思维技巧
2015/10/13 Javascript
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
详解Vuejs2.0之异步跨域请求
2017/04/20 Javascript
解决layui中的form表单与button的点击事件冲突问题
2018/08/15 Javascript
node将geojson转shp返回给前端的实现方法
2019/05/29 Javascript
vue中keep-alive组件的入门使用教程
2019/06/06 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
Pycharm学习教程(4) Python解释器的相关配置
2017/05/03 Python
对python内置map和six.moves.map的区别详解
2018/12/19 Python
Django实现学员管理系统
2019/02/26 Python
详解Python Matplot中文显示完美解决方案
2019/03/07 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
2019/07/03 Python
anaconda中更改python版本的方法步骤
2019/07/14 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
Django框架models使用group by详解
2020/03/11 Python
python绘制趋势图的示例
2020/09/17 Python
探亲假请假条
2014/04/11 职场文书
信息员培训方案
2014/06/12 职场文书
网络技术专业求职信
2014/07/13 职场文书
2014年幼儿园学期工作总结
2014/12/05 职场文书
2019新学期家长会工作计划
2019/08/21 职场文书
MySQL中order by的使用详情
2021/11/17 MySQL
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android