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. 在VIM中进行快速的查找和替换

    VIM是被誉为非常高效的文本编辑软件.但是掌握并高效的使用是件有难度的事情.在VIM中进行快速的查找和替换是提高VIM使用效率的重要方法.下面是我在阅读VIM用户手册时整理的一些资料: 行内搜索. f ...

  2. JS刷新父窗口的几种方式<转>

    常用的有:   window.opener.location.reload();    和  window.location.reload(); 浮层内嵌iframe及frame集合窗口,刷新父页面的 ...

  3. pdf预览-js版本

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  4. (转)css3-box-sizing属性详解

    box-sizing是CSS3的box属性之一.一说到CSS的盒模型(Box model)我想很多人都会比较烦,特别是对于新手,然而这个Box model又是我们CSS运用中比较重要的一个属性.那么C ...

  5. 深入浅出Mybatis系列(十)---SQL执行流程分析(源码篇)

    最近太忙了,一直没时间继续更新博客,今天忙里偷闲继续我的Mybatis学习之旅.在前九篇中,介绍了mybatis的配置以及使用, 那么本篇将走进mybatis的源码,分析mybatis 的执行流程, ...

  6. java substring

    str=str.substring(int beginIndex,int endIndex);中最终得到的值: beginIndex =< str的值 < endIndex

  7. Windows Store App 全球化 设置指定页面的语言

    上一小节介绍了通过在应用程序中添加语言设置选项来改变整个应用显示信息的语言,而有时用户只想对应用中某一页面信息的语言进行调整,这时就不能使用上一小节所讲述的知识来对应用进行设置.下面将通过一个示例介绍 ...

  8. BZOJ1828 [Usaco2010 Mar]balloc 农场分配

    直接贪心,我们把线段按照右端点从小到大排序,然后一个个尝试插入即可... 来证明贪心的正确性: 不妨设贪心得到的答案集合为$S$,最优解的答案集合为$T$ 若$S$不是最优解,那么$S \not= T ...

  9. 使用Kettle抽取数据时,出现中文乱码问题解决方案

    使用Kettle在不同的数据库抽取数据时,有时会出现中文乱码问题:其解决方案如下: 1.查看数据库的字符集是否是UTF-8(最常用的字符集) 2.如果数据库设置正确仍然存在中文乱码,则可能是因为有的客 ...

  10. 利用jQueryRotate旋转插件开发大转盘抽奖

    前言: 公司原来开发大转盘抽奖活动用的是flash 我发现swf文件竟然有6m大,吓尿了! 其实完全可以用js写的,但是自身前端功力有限,且时间紧迫,所以直接用旋转插件就好,兼容各方面都可以保证. 1 ...