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 '%大%'));
转载于:https://www.cnblogs.com/sjxx/p/5626516.html
ThinkPHP(3)SQL查询语句相关推荐
- SQL查询语句 select 详解
查询select: 1.单表查询 2.多表查询 3.嵌套查询分类 1)单表查询 2)多表查询 A.连接查询 B.子查询 ①一般子查询 ②相关子查询*************************** ...
- MySQL番外篇:一条SQL查询语句是如何执行的?
在面试的过程中,有的面试官会给出一条简单的SQL查询语句,让简单说一下执行的过程. SELECT * FROM emp where age=30; 以下问MySQL的基本架构图,从中可以看出SQL语句 ...
- SQL查询语句总是先执行SELECT?你们都错了。。。
来源 | infoq.cn/article/Oke8hgilga3PTZ3gWvbg 很多 SQL 查询都是以 SELECT 开始的.不过,最近我跟别人解释什么是窗口函数,我在网上搜索"是否 ...
- R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库、将dplyr语法查询语句翻译为SQL查询语句
R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库.将dplyr语法查询语句翻译为SQL查询语句 目录
- SQL 查询语句总是先执行 SELECT?你们都错了
很多 SQL 查询都是以 SELECT 开始的.不过,最近我跟别人解释什么是窗口函数,我在网上搜索"是否可以对窗口函数返回的结果进行过滤"这个问题,得出的结论是"窗口函数 ...
- SQL 查询语句总是先执行 SELECT?
点击上方"朱小厮的博客",选择"设为星标" 后台回复"1024"领取惊喜资料 很多 SQL 查询都是以 SELECT 开始的.不过,最近我跟 ...
- SQL查询语句基础构成
本文是基本的SQL查询语句用法,内容主要来自Alan Learning SQL这本书第3章,包括select,from,where,group by,having,order by六个查询子句,后续会 ...
- 从Mysql某一表中随机读取n条数据的SQL查询语句
若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...
- 怎么做mysql查询系统_mysql数据库系统学习(一)---一条SQL查询语句是如何执行的?...
一.第一节:一条sql查询语句是怎样执行的 5.5.5版本以后,默认使用存储引擎为InnoDB 不使用查询缓存,MySQL8.0没有查询缓存这个功能 总体来说:MySQL分为service层和存储引擎 ...
最新文章
- 【AC自动机】【字符串】【字典树】AC自动机 学习笔记
- php 验证码 扩展,使用 Captcha 扩展包 为 Laravel 5 应用生成验证码
- 微服务架构 为什么需要配置中心
- RadioButton加入DataGrid模板列引起的问题。
- body中的font属性和color属性
- Pycharm切换anaconda的环境
- JPA实体关联关系,一对一以及转换器
- mysqlshow命令的用法介绍
- 调试网络收发不通问题
- 吴军:为什么计算机不是万能的
- 搜狗AI助力居理新房打造智能售房新模式
- 我在外包的日子35:二期上线
- FastDfs工作笔记001---Centos下安装FastDfs进行文件存储
- Python自动发送邮件提示:smtplib.SMTPServerDisconnected: please run connect() first
- 解决办法:look up error: undefined symbol
- 古诗词取名小工具1.0
- 计算机模拟计算 电脑配置,Material Studio材料模拟计算的工作站配置方案
- 【知识必备】RxJava+Retrofit二次封装最佳结合体验,打造懒人封装框架~
- 计算机网络修复提示DNS服务器,dns被劫持或提示配置错误,该怎么解决
- 暴力更改hex文件实现自动烧写stm32程序
热门文章
- 如何通过数据包套接字攻击Linux内核
- Android Settings开发之修改
- Android开发工具之Android Studio---版本控制SVN使用三(常规操作)
- 谷歌浏览器中文版_GitHub上最励志的计算机自学教程:8个月,从中年Web前端到亚马逊百万年薪软件工程师 | 中文版...
- JZOJ 5384. 【NOIP2017提高A组模拟9.23】四维世界
- Qt 读取XML文档的简单示例
- stm8s003程序跑飞_A股要大跌?跑不跑就看明天……
- [codevs 1232] 飞行员配对方案问题
- Codeforces Gym 101630J Journey from Petersburg to Moscow (最短路)
- python 变量转字符串_[Python Basic] 字符串处理以及类型转换 2