ThinkPHP(3)SQL查询语句
ThinkPHP中对查询语句,包含了基本的查询方式、表达方式、快速查询、区间查询、组合查询、SQL查询、动态查询和子查询。
一、查询方式
ThinkPHP提供了三种基本的查询方式:字符串条件查询、索引数组条件查询和对象条件查询。在大多情况下,推荐使用索引数组和对象方式作为查询条件,因为会更安全。
1.使用字符串作为条件查询
$user = M('user');
var_dump($user->where('id=1 AND user="姓名"')->select());
//最终生成的SQL语句
select * from 'user' where (id=1 AND user="姓名")
注意:where查询方法里面只要包含条件即可,多个条件加上AND等连接符即可。
2.使用索引数组作为查询条件
$user = M('user');
$condition['id'] = 1;
$condition['user'] = 'name';
var_dump($user->where($condition)->select());
//最终生成的SQL语句
select * from 'user' where ('id'=1)AND('user' = 'name')
注意:索引数组查询的逻辑关系是AND,如果想改变为OR,可以使用_logic定义查询逻辑
基于上面的代码增加如下一行:
$condition['_logic'] = 'OR'; //将默认AND改成OR
3.使用对象方式来查询
$user = M('user');
$condition = new \stdClass();
$condition->id = 1;
$condition->user = 'name';
var_dump($user->where($condition)->select());
//最终生成的SQL语句
select * from user where ('id' = 1) AND ('user' = 'name')
注意:stdClass类是php内置的类,可以理解为一个空类,在这里可以理解为把条件的字段作为成员保存到stdClass类里。而这里的'\'是将命名空间设置为根目录,否则会导致当前目录找不到此类。使用对象和数组查询,效果是一样的,可以互换。在大多数情况下,ThinPHP推荐使用数组形式更高效。
二、表达式查询
对于那些要实现模糊判断的查询,比如大于、等于、小于之类的SQL查询,可以使用表达式查询方式。查询表达式格式:$map['字段名'] = array('表达式','查询条件');
注意:表达式不区分大小写。
//EQ:等于(=)
$map['id'] = array('eq',1); //where为id=1
//NEQ:不等于(<>)
$map['id'] = array('neq',1); //where为id<>1
//GT:大于(>)
$map['id'] = array('gt',1); //where为id>1
//EGT:大于等于(>=)
$map['id'] = array('egt',1); //where为id>=1
//LT:小于(<)
$map['id'] = array('lt',1); //where为id<1
//ELT:小于等于(<=)
$map['id'] = array('elt',1); //where为id<=1
//[NOT]LIKE:模糊查询
$map['user'] = array('like','%小%'); //where为like %小%
//[NOT]LIKE:模糊查询的数组方式
$map['user'] = array('like',array('%小%','%大%'),'AND');
//生成的SQL
select * from 'user' where (('name' like '%小%' AND 'name' like '%大%'));
ThinkPHP(3)SQL查询语句的更多相关文章
- 【三十三】thinkphp之SQL查询语句(全)
一:字符串条件查询 //直接实例化Model $user=M('user1'); var_dump($user->where ('id=1 OR age=55')->select()); ...
- SQL查询语句 [2]
一.快捷查询 快捷查询方式是一种多字段查询的简化写法,在多个字段之间用'|'隔开表示OR,用'&'隔开表示 AND. 1.不同字段相同查询条件 在 Home/controller/UserC ...
- thinkphp中的查询语句
<?php namespace Admin\Controller; use Think\Controller; class MainController extends Controller { ...
- sql查询语句如何解析成分页查询?
我们公司主要mysql存储数据,因此也封装了比较好用mysql通用方法,然后,我们做大量接口,在处理分页查询接口,没有很好分查询方法.sql查询 语句如何解析成“分页查询”和“总统计”两条语句.可能, ...
- 15个初学者必看的基础SQL查询语句
本文由码农网 – 小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 本文将分享15个初学者必看的基础SQL查询语句,都很基础,但是你不一定都会,所以好好看看吧. 1.创建表和数据插 ...
- SQL查询语句去除重复行
1.存在两条完全相同的纪录 这是最简单的一种情况,用关键字distinct就可以去掉 select distinct * from table(表名) where (条件) 2.存在部分字段相同的纪录 ...
- WordPress 常用数据库SQL查询语句大全
在使用WordPress的过程中,我们少不了要对数据库进行修改操作,比如,更换域名.修改附件目录.批量修改文章内容等等.这个时候,使用SQL查询语句可以大大简化我们的工作量. 关于如何操作SQL查询语 ...
- (转)经典SQL查询语句大全
(转)经典SQL查询语句大全 一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql s ...
- 转: 从Mysql某一表中随机读取n条数据的SQL查询语句
若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...
随机推荐
- Python_Day10_进程、线程、协程
本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\ ...
- react+redux完整项目
地址:https://segmentfault.com/a/1190000007642740?utm_source=tuicool&utm_medium=referral
- nginx的ngx_http_request_t结构体
struct ngx_http_request_s { uint32_t signature; /* "HTTP" */ //请求对应的客户端连接 ngx_connection_t ...
- Stack与Queue
一.Stack的方法 1. public void push(int node) 把项 压入栈顶.其作用与 addElement (node) 相同. 不一定是int,可以是节点 stack.p ...
- UISegmentControl
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- C#winform调整控件的位置
现在有三个控件并排放置 第二个控件有隐藏功能 隐藏后第一个控件和第三个控件的距离要缩小,于是就要改变第三个控件的位置 尝试用Location.X属性去设置,但是被告知此非变量 于是只能另外想办法 搜到 ...
- Windows Store App Image开发示例
通过上面的介绍,读者已经了解了Image对象及ImageBrush对象的使用方法和常用属性,在实际的开发工作中,比较常用的是Image对象,下面以一个幼儿园识物识字卡应用为例,来帮助读者更好的理解Im ...
- Linux教程:SSH免密码登录的方法
公司里有N台服务器需要经常登录,每次ssh的时候都要输入密码实在太不爽了,今天有空一口气全部改为公钥/私钥认证,登录再也不用任何密码了. 实现步骤: 1.在你的自己的机器下面使用ssh-keygen命 ...
- JavaScript基础之DOM修改样式
1.获取或设置元素的内容:3个属性: 1. innerHTML: 获取或设置元素开始标签到结束标签之间的所有HTML代码原文. 何时使用:只要获得完整的html代码原文时 优化 ...
- RPM
1.安装RPM 使用-ivh选项即可,能查看安装信息和进度. 例如: #RPM -ivh XXX.rpm RPM升级与更新,使用-Uvh选项或者-Fvh选项,两者略有区别. -Uvh选项:后面接的软件 ...