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

在 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. BitmapUtil(高效压缩不失真)

    package com.changim.patient.app.utils; import android.app.Activity; import android.content.ContentRe ...

  2. Gitblit的使用

    什么是 Gitblit Gitblit是一个开源的用于管理,查看和提供Git仓库. 它主要设计为希望托管集中存储库的小工作组的工具. Gitblit有什么特点 ... Gitblit部署示例1 日常维 ...

  3. 马拉车——模版+KMP——模版

    void Manacher(){ ;t[i];++i,len+=){ s[i<<]='#'; |]=t[i]-'A'+'a'; |]=t[i]; } s[len++]='#'; ,pos= ...

  4. 统计日志中ip出现的次数

    grep -r 'GET /weixin/weixin_izp/index.html' ./chunyun.access.log > ~/access.log cat access.log |a ...

  5. LeetCode Design Compressed String Iterator

    原题链接在这里:https://leetcode.com/problems/design-compressed-string-iterator/description/ 题目: Design and ...

  6. 洛谷 P1854 花店橱窗布置

    题目描述 某花店现有F束花,每一束花的品种都不一样,同时至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定的,从左到右按1到V顺序编号,V是花瓶的数目.花束可以移动,并且每束花用1到F的整数标识 ...

  7. 学习动态性能表(7)--v$process

    学习动态性能表 第七篇--V$PROCESS  2007.5.30 本视图包含当前系统oracle运行的所有进程信息.常被用于将oracle或服务进程的操作系统进程ID与数据库session之间建立联 ...

  8. [转]HTTP详解(1)-工作原理

    1. HTTP简介 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议.它可以使浏览器更加高效,使网络传输减少. ...

  9. PHP根据两点间的经纬度计算距离,php两点经纬度计算(转)

    这是一个不错的示例,直接贴代码,首先要知道纬度值.经度值 /** * @desc 根据两点间的经纬度计算距离 * @param float $lat 纬度值 * @param float $lng 经 ...

  10. bzoj 5210 最大连通子块和——动态DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5210 似乎像bzoj4712一样,依然可以用别的方法做.但还是只写了动态DP. 当然是dp[ ...