一.使用字符串作为条件查询

在 Home/controller/UserController.class.php 下插入

<?php
namespace Home\Controller;
use Think\Controller;
use Think\Model; class UserController extends Controller { public function model() {
$user = M('User');
var_dump($user->where('id=1')->select());
}
}

这是最基本的调用方法,更详细点则是

 var_dump($user->where('id=1 and user = "蜡笔小新"')->select()); 

二、下面介绍数组查询方法

就是将 var_dump($user->where('id=1')->select()); 这行用下面的代码替换

   $condition['id']=1;
$condition['user']="蜡笔小新";
var_dump($user->where($condition)->select());

这时使用调试工具在浏览器中看到的是:

这时使用where默认的是ADN,如果想换成OR的话,再加上一条语句即可:

$condition['_logic']='or';

三、使用对象查询

同样将 var_dump($user->where('id=1')->select()); 用下列代码替换:

$condition = new \stdClass();
$condition->id=1;
$condition->user = '蜡笔小新';

PS:stdClass 类是 PHP 内置的类,可以理解为一个空类,在这里可以理解为把条件的
字段作为成员保存到 stdClass 类里。而这里的'\'是将命名空间设置为根目录,否则会导
致当前目录找不到此类。使用对象和数组查询,效果是一样的,可以互换。在大多数情况下,
ThinkPHP 推荐使用数组形式更加高效。


下面介绍表达式查询

  对于那些要实现模糊判断的查询,比如大于、等于、小于之类的SQL查询,可以使用表达式查询方式。
  查询表达式格式:$map['字段名'] = array('表达式','查询条件');

                    表达式查询

表达式  含义
EQ 等于(=)
NEQ  不等于(<>)
GT 大于(>)
EGT 大于等于(>=)
LT  小于(<)
ELT  小于等于(<=)
[NOT]LIKE  模糊查询
[NOT] BETWEEN  (不在)区间查询
[NOT] IN  (不在)IN查询
EXP  表达式查询,支持SQL语法

在 Home/controller/UserController.class.php 中插入以下代码进行查询:

$user = M('User');
$map['id'] = array('eq',1);
var_dump($user->where($map)->select());

查询id=1的数据;

从EQ到ELT的只需要改变array('eq',1)中的eq就行,

这是like 模糊查询的方式:

$map['user'] = array('like','%小%'); 查询用户名中带有“小”的数据,

$map['user'] = array('notlike','%小%'); 查询用户名中不带有“小”的数据,

$map['user'] = array('like', array('%小%', '%蜡%'), 'AND'); 查询用户名中带有“小”和"腊"的数据,这时后面加了AND,如果不加的话,默认的就是OR.

下面是between的用法:

$map['id'] = array('between','1,3'); 查询'id'在1到3之间的数据,

$map['id'] = array('between',array('1','3')); 和上一句作用相同,

$map['id'] = array('not between','1,3'); 查询除了'id'不等于1到3之间的数据,这时not和between之间用空格,之前的notlike之间没空格

下面是in的用法:

$map['id'] = array('in','1,2,4'); 查询id为1,2,4的数据;

$map['id'] = array('not in','1,2,4'); 查询id不等于1,2,3的数据,且这时not和in之间也是有空格

EXP:自定义:   (PS:使用 exp 自定义在第二个参数直接写 where 语句即可)

$map['id']=array('exp','=1'); 查询id等于1的数据

$map['id'] = array('exp','in (1,2,4)'); 查询id为1,2,4的数据;

$map['id'] =  array('exp', '=1');
$map['user'] = array('exp', '="蜡笔小新"');
$map['_logic'] = 'OR';
//WHERE 为( (`id` =1) ) OR ( (`user` ="蜡笔小新") )

SQL查询语句 [1]的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

  7. 经典SQL查询语句大全

    一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数 ...

  8. oracle中sql查询语句的执行顺序

    查询语句的处理过程主要包含3个阶段:编译.执行.提取数据(sql查询语句的处理主要是由用户进程和服务器进程完成的,其他进程辅助配合) 一.编译parse 在进行编译时服务器进程会将sql语句的正文放入 ...

  9. SQL查询语句分类

    SQL查询语句有多种,下面总结下.首先先建三张表用于后面的实验 -- 学生表,记录学生信息 CREATE TABLE student( sno ), sname ), ssex ENUM('男','女 ...

  10. 浅谈SQL优化入门:1、SQL查询语句的执行顺序

    1.SQL查询语句的执行顺序 (7) SELECT (8) DISTINCT <select_list> (1) FROM <left_table> (3) <join_ ...

随机推荐

  1. orale存储技术

    一.存储的主要作用 1.海量存储 阵列存储   光盘存储   磁带存储   数据迁移   文件服务器,跨平台文件共享 2.容灾 数据备份及恢复:磁带.光盘.阵列  数据复制:本地镜像.远程镜像 3.高 ...

  2. EXCEL对比重复数据

    一.       EXCEL 突出重复项 1.      选择对应的数据 EXCEL 里选择好数据 2.      选择条件格式 这样就完成了数据重复的突出,可以按条件筛选.选择自己想要的数据

  3. gulp插件之-----转化es6代码到es5 取消严格模式 remove "use strict" directive

    Installation npm install babel-plugin-transform-remove-strict-mode && yarn add babel-plugin- ...

  4. LeetCode OJ:Binary Tree Level Order Traversal II(二叉树的层序遍历)

    Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ...

  5. nyoj-3-多边形重心问题(求多边形面积和中心)

    题目链接 /* Name:nyoj-3-多边形重心问题 Copyright: Author: Date: 2018/4/26 21:25:41 Description: ACM国际大学生程序设计竞赛 ...

  6. Unity3D教程:制作与载入AssetBundle

    通常我们在游戏程式执行过程,并不希望一次将全部的资源都载入,而比较希望实际上有使用到的才载入,以免占用多余的记忆体,所以我们可能会尽量规划好不同功能的场景,在需要时才载入场景并释放掉前个场景中不需要的 ...

  7. MySql 创建函数 Error Code : 1418

    查看日志信息:show variables like 'log_%';显示'log_bin'.'log_bin_trust_function_creators'等状态 解决方法: 关闭binary l ...

  8. C#进阶之路(一):委托

    一.什么是委托 简单说它就是一个能把方法当参数传递的对象,而且还知道怎么调用这个方法,同时也是粒度更小的“接口”(约束了指向方法的签名). 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方 ...

  9. C#面向对象(四):其他面向对象知识

    前文链接: C#面向对象(一):明确几个简单的概念作为开胃菜 C#面向对象(二):封装和继承 C#面向对象(三):多态 今天是这个系列的收尾文章了,来谈谈其他面向对象知识. 1.嵌套类 1.1概念 在 ...

  10. .NET MVC 异步提交和返回参数

    一.后台页面中的接收方法和返回写法 Jsonresult意味着返回值是json格式,也可以是string或者int等其他类型. Httppost代表只接受Post方法. Mvc中返回Jsonresul ...