where方法的用法是ThinkPHP查询语言的精髓,也是ThinkPHP ORM的重要组成部分和亮点所在,可以完成包括普通查询、表达式查询、快捷查询、区间查询、组合查询在内的查询操作。where方法的参数支持字符串和数组,虽然也可以使用对象但并不建议。

## 字符串条件

使用字符串条件直接查询和操作,例如:

~~~

$User = M("User"); // 实例化User对象

$User->where('type=1 AND status=1')->select();

~~~

最后生成的SQL语句是

~~~

SELECT * FROM think_user WHERE type=1 AND status=1

~~~

使用字符串条件的时候,建议配合预处理机制,确保更加安全,例如:

~~~

$Model->where("id=%d and username='%s' and xx='%f'",array($id,$username,$xx))->select();

~~~

或者使用:

~~~

$Model->where("id=%d and username='%s' and xx='%f'",$id,$username,$xx)->select();

~~~

如果`$id`变量来自用户提交或者URL地址的话,如果传入的是非数字类型,则会强制格式化为数字格式后进行查询操作。

字符串预处理格式类型支持指定数字、字符串等,具体可以参考vsprintf方法的参数说明。

## 数组条件

数组条件的where用法是ThinkPHP推荐的用法。

##### 普通查询

最简单的数组查询方式如下:

~~~

$User = M("User"); // 实例化User对象

$map['name'] = 'thinkphp';

$map['status'] = 1;

// 把查询条件传入查询方法

$User->where($map)->select();

~~~

最后生成的SQL语句是

~~~

SELECT * FROM think_user WHERE `name`='thinkphp' AND status=1

~~~

##### 表达式查询

上面的查询条件仅仅是一个简单的相等判断,可以使用查询表达式支持更多的SQL查询语法,查询表达式的使用格式:

~~~

$map['字段1'] = array('表达式','查询条件1');

$map['字段2'] = array('表达式','查询条件2');

$Model->where($map)->select(); // 也支持

~~~

表达式不分大小写,支持的查询表达式有下面几种,分别表示的含义是:

| 表达式 | 含义 |

|-----|-----|

| EQ | 等于(=) |

| NEQ | 不等于(<>) |

| GT | 大于(>) |

| EGT | 大于等于(>=) |

| LT | 小于(

| ELT | 小于等于(<=) |

| LIKE | 模糊查询 |

| [NOT] BETWEEN | (不在)区间查询 |

| [NOT] IN | (不在)IN 查询 |

| EXP | 表达式查询,支持SQL语法 |

## 多次调用

where方法支持多次调用,但字符串条件只能出现一次,例如:

~~~

$map['a'] = array('gt',1);

$where['b'] = 1;

$Model->where($map)->where($where)->where('status=1')->select();

~~~

多次的数组条件表达式会最终合并,但字符串条件则只支持一次。

更多的查询用法,可以参考[查询语言](1766)部分。

PHP3.2.3 where or,WHERE · ThinkPHP3.2.3完全开发手册 · 看云相关推荐

  1. php tp3 操作绑定到类,操作绑定到类 · ThinkPHP3.2.3完全开发手册 · 看云

    ## 定义 ThinkPHP3.2版本提供了把每个操作方法定位到一个类的功能,可以让你的开发工作更细化,可以设置参数**ACTION_BIND_CLASS**,例如: ~~~ 'ACTION_BIND ...

  2. php sae,SAE · ThinkPHP3.2.3完全开发手册 · 看云

    ## SAE介绍 Sina App Engine(简称**SAE**)是新浪研发中心开发的国内首个公有云计算平台,是新浪云计算战略的核心组成部分,作为一个简单高效的分布式Web服务开发.运行平台越来越 ...

  3. 数据缓存 php,数据缓存 · ThinkPHP3.2.3完全开发手册 · 看云

    在ThinkPHP中进行缓存操作,一般情况下并不需要直接操作缓存类,因为系统内置对缓存操作进行了封装,直接采用S方法即可,例如: ## 缓存初始化 ~~~ // 缓存初始化 S(array('type ...

  4. think php 3.3.3看云,入口文件 · ThinkPHP3.2.3完全开发手册 · 看云

    ThinkPHP采用**单一入口模式**进行项目部署和访问,无论完成什么功能,一个应用都有一个统一(但不一定是唯一)的入口. 应该说,所有应用都是从入口文件开始的,并且不同应用的入口文件是类似的. # ...

  5. php tp3.2 添加表内容,数据创建 · ThinkPHP3.2.3完全开发手册 · 看云

    在进行数据操作之前,我们往往需要手动创建需要的数据,例如对于提交的表单数据: ~~~ // 获取表单的POST数据 $data['name'] = $_POST['name']; $data['ema ...

  6. php 5.2 thinkphp 3.2.2 cache,查询缓存-ThinkPHP3.2.3完全开发手册

    对于及时性要求不高的数据查询,我们可以使用查询缓存功能来提高性能,而且无需自己使用缓存方法进行缓存和获取. 查询缓存功能支持所有的数据库,并且支持所有的缓存方式和有效期. 在使用查询缓存的时候,只需要 ...

  7. think php union,UNION -ThinkPHP3.2.3完全开发手册 | AnSpoon.Com

    UNION操作用于合并两个或多个 SELECT 语句的结果集. 使用示例: $Model->field('name') ->table('think_user_0') ->union ...

  8. php手册3.1,thinkphp3.1手册下载|thinkphp3.1手册(thinkphp3.1开发手册chm版下载)_星星软件园...

    thinkphp3.1开发手册是为thinkphp用户打造的辅助工具,可以方便用户了解phpthinkphp的基本环境要求.配置步骤等,同时还包含了丰富的函数和类库.模型等,有需要的用户欢迎下载. 包 ...

  9. Thinkphp3.2.3安全开发须知

    0x00 简介 阅读须知 1, 本文所用框架是官方Thinkphp3.2.3 2, 本文所举例子并不关TP这个框架什么事情,也没有吐槽TP的意思,只是单纯的希望帮助使用TP的开发者更好的认识这框架,能 ...

最新文章

  1. python根据二叉树的前序遍历和中序遍结果历重建二叉树
  2. ThinkPHP的安装
  3. [转载]读塔莎奶奶的美好生活
  4. WINCE6补丁安装
  5. Linux查看进程并重启服务命令
  6. 从 ES 规范 中理解 this
  7. laravel 数据填充
  8. nodejs+express- http 访问本地json数据
  9. 【Windows】win10电脑Miracast投屏到电视
  10. 数据结构视频教程 清华大学严蔚敏主讲 全48讲完整版asf格式
  11. 机理与机制的含义与区别
  12. 计算机刻录机无法显示,电脑不识别刻录机是为什么
  13. Leetcode 题解-59题
  14. 京峰网站架构,上线流程
  15. js 对象动态添加/设置属性名和属性值
  16. 经验:MathType公式在Word中显示不全的解决办法
  17. ar1220e-s虚拟服务器,华为路由器AR1220E-S和华为AP3010 FIT模式与openportal对接教程
  18. 浅谈电缆行业MES系统解决方案
  19. 不要再把 pp 写成 % 了。
  20. 喜欢在计算机教室上课,计算机教室上课规则

热门文章

  1. 前端学习(3030):vue+element今日头条管理-顶部导航栏布局
  2. [html] iframe父页面如何获取子页面的元素?
  3. [html] 请说说input的inputmode属性有什么应用场景?
  4. [html] HTML5的video在手机端如何实现进来页面时就自动播放?
  5. 前端学习(2821):windows上配置tabber字段
  6. oracle之单行函数之分组函数之课后练习
  7. 实例26:python
  8. Vue项目 开启gzip
  9. javascript二维数组转置_精通Excel数组公式010:认识数组函数:TRANSPOSE、MODE.MULT和TREND...
  10. 洛谷 P3244 / loj 2115 [HNOI2015] 落忆枫音 题解【拓扑排序】【组合】【逆元】