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. SQL Server Reporting Service(SSRS) 第三篇 SSRS Matrix用法

    以前不是太清楚SSRS的功能,自从最近有了了解之后,发现它的功能的确很强大.对于Matrix,刚开始我竟不知道它到底有什么用,现将通过一个例子中去理解Matrix,以及和分组Group结合使用的便利性 ...

  2. i.Windows下APR安装过程

    1.下载安装native Windows下的APR安装和配置比较简单,可以直接下载Tomcat-native的二进制的版本包: 下载之后的目录结构为: tcnative-1.dll这个库已经包含了AP ...

  3. WPF中实现登陆窗口的“记住帐号”功能

    1.在Login.xaml中添加资源: <XmlDataProvider x:Key="XmlDataProvider" Source="pack://applic ...

  4. 做为一名PHP程序员,应该关注的互联网IT大牛!

    俗话说:“读万卷书不如行万里路,行万里路不如高人指路”,做为一名新人,以后的路还很长,多年你的成就取决于今天的自己付出,选中自己的方向比什么都重要,关注大牛,向他们学习,才不会迷失自己! 1.惠新宸( ...

  5. AFNetworking之于https认证

    写在开头: 本来这篇内容准备写在AFNetworking到底做了什么?(三)中的,但是因为我想在三中完结这个系列,碍于篇幅所限.并且这一块内容独立性比较强,所以单独拎出来,写成一篇. 本文从源码的角度 ...

  6. 多行溢出隐藏显示省略号功能的JS实现

    在页面重构中,经常需要将过多的内容隐藏而显示部分.在单行文本中实现非常简单,但是在多行文本中,则需要根据实际选择不同的方式. 用CSS实现多行溢出隐藏的代码非常简单,但是兼容性也相对较低. displ ...

  7. 使用dreamweaver去掉文本中的空格和换行

    当我们从其他地方拷贝文本到网页,在html代码中会自动带有空格和换行,手动去掉很麻烦,今天试着用dreamweaver去了一下,方法如下: 1.点击Ctrl+F,打开“查找和替换”窗口 2‘见下图:

  8. Windows Store App 全球化:应用中设置语言选项

    当开发者将开发的应用上传到Windows应用商店以后,使用Windows 8系统的用户可能会看到并下载这些应用,而这些用户所在的区域或者所使用的语言可能都不相同,如果他们在使用应用程序时希望改变应用显 ...

  9. FZU 2150 Fire Game

    Fire Game Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit St ...

  10. Solr环境搭建过程中遇到的问题

    Solr下载地址:http://www.apache.org/dyn/closer.lua/lucene/solr/6.3.0 Solr搭建步骤转自:http://blog.csdn.net/wbcg ...