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查询语句的更多相关文章

  1. 【三十三】thinkphp之SQL查询语句(全)

    一:字符串条件查询 //直接实例化Model $user=M('user1'); var_dump($user->where ('id=1 OR age=55')->select()); ...

  2. SQL查询语句 [2]

    一.快捷查询 快捷查询方式是一种多字段查询的简化写法,在多个字段之间用'|'隔开表示OR,用'&'隔开表示 AND. 1.不同字段相同查询条件 在  Home/controller/UserC ...

  3. thinkphp中的查询语句

    <?php namespace Admin\Controller; use Think\Controller; class MainController extends Controller { ...

  4. sql查询语句如何解析成分页查询?

    我们公司主要mysql存储数据,因此也封装了比较好用mysql通用方法,然后,我们做大量接口,在处理分页查询接口,没有很好分查询方法.sql查询 语句如何解析成“分页查询”和“总统计”两条语句.可能, ...

  5. 15个初学者必看的基础SQL查询语句

    本文由码农网 – 小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 本文将分享15个初学者必看的基础SQL查询语句,都很基础,但是你不一定都会,所以好好看看吧. 1.创建表和数据插 ...

  6. SQL查询语句去除重复行

    1.存在两条完全相同的纪录 这是最简单的一种情况,用关键字distinct就可以去掉 select distinct * from table(表名) where (条件) 2.存在部分字段相同的纪录 ...

  7. WordPress 常用数据库SQL查询语句大全

    在使用WordPress的过程中,我们少不了要对数据库进行修改操作,比如,更换域名.修改附件目录.批量修改文章内容等等.这个时候,使用SQL查询语句可以大大简化我们的工作量. 关于如何操作SQL查询语 ...

  8. (转)经典SQL查询语句大全

    (转)经典SQL查询语句大全 一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql s ...

  9. 转: 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

随机推荐

  1. 使用Spring Tool Suite创建Maven Web工程

    使用STS或者Eclipse这样的IDE创建Maven Web工程还真不是一般的麻烦! 看了网上不少的方法介绍,操作下来总有区别,不是这里不对就是那里不对. 下面是尝试了几次之后成功的方法,记录一下. ...

  2. ubuntu apt-get 时 Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

    sudo cp /etc/apt/sources.list ~/ sudo wget "http://pastebin.com/raw.php?i=uzhrtg5M" -O /et ...

  3. 用Broadcast广播在activity之间、fragment之间、activity和fragment之间相互传数据

    例如:A界面要收到B界面的更变信息 一.A界面注册广播 private static final String INTENT_BROADCAST = "android.intent.acti ...

  4. 从github拉取项目到myeclipse本地

    1.首先拿到jacky-lulu分享的地址 https://github.com/jacky-lulu1/cxf_client 2.登录jacky-lulu账号,fork一份cxf_client到自己 ...

  5. css实现定高的元素在不定高的容器中水平垂直居中(兼容IE8及以上)

    容器设置相对定位 元素设置宽高,并使用绝对定位,上下左右值均为0,margin:auto 如下所示: <!DOCTYPE html> <html> <head lang= ...

  6. Myeclipse的使用

    一,错误解决 1, 现象:使用eclipse运行带有main函数的Java文件时,出现editor does not contain a main type的错误框 原因:原来这个class所在包没有 ...

  7. 制作简单的2D物理引擎(一)——动力学基础

    一切的基础 点 在二维平面中,点$P$就是坐标$(x,y)$,点集就是一系列坐标的集合$\{P_1,P_2,...,P_n\}$,不过这个集合是有序的(顺时针). 向量 加减运算 $$\vec{P}\ ...

  8. [并查集] POJ 2236 Wireless Network

    Wireless Network Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 25022   Accepted: 103 ...

  9. [转载]再来重新认识JavaEE完整体系架构

    移步: http://www.jizhuomi.com/software/644.html

  10. Java集合类学习笔记(Set集合)

    Set集合不允许包含相同的元素,如果试图把两个相同的元素加入同一个Set集合中,则添加操作失败,add()方法返回false,且新元素不会被加入. HashSet类的特点: 不能保证元素的排列顺序,顺 ...