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

在 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. 卸载全部appx应用(包括应用商店)

    在PowerShell中粘贴: Get-AppXPackage | Remove-AppxPackage

  2. ural 2021 Scarily interesting!(贪心)

    2021. Scarily interesting! Time limit: 1.0 secondMemory limit: 64 MB This year at Monsters Universit ...

  3. 详细说明svn分支与合并,以及实例

    详细说明svn分支与合并,以及实例 一,svn分支与合并有什么用? 作程序的,对svn在熟悉不过了,但对svn分支熟悉的,我想并不多.因为一般情况下,是用不着svn分支的,其实也没有那个必要.下面我例 ...

  4. Smarty的模板中不允许PHP的代码?

    /****************************************************************************** * Smarty的模板中不允许PHP的代 ...

  5. centOS5.5 配置vnc,开启linux远程桌面

    如何远程控制centOS桌面? 如何使用windows远程控制centOS桌面? 1.查看本机是否有安装vnc(centOS5默认有安装vnc) rpm -q vnc vnc-server 如果显示结 ...

  6. Linux Matlab mex gcc 版本

    一般MATLAB的mex支持的gcc版本都比最新的gcc要低一些,所以一般要配置一下. 假设当前版本的gcc是4.8,matlab支持4.6,可以使用以下的方式解决(任选一种).(自己装好gcc-4. ...

  7. Day2-VIM(四):修改

    字符替换 r 单个字符替换 R 连续替换 - 更改大小写 很简单,多试试就行了 tips:4-更改连续4个字符的大小写,很有意思 单词修改 cw 从光标处修改到单词结尾 cb 从光标处修改到单词开头 ...

  8. Spring线程池由浅入深的3个示例

    作者博客主页:http://blog.csdn.net/chszs 本文提供了三个Spring多线程开发的例子,由浅入深,由于例子一目了然,所以并未做过多的解释.诸位一看便知. 前提条件: 1)在Ec ...

  9. type命令

    用途说明 type命令用来显示指定命令的类型.一个命令的类型可以是如下几种: alias 别名 keyword 关键字,Shell保留字 function 函数,Shell函数 builtin 内建命 ...

  10. 专题练习HDU题集 图论

    [图论01]最短路 Start Time : 2018-01-02 12:45:00    End Time : 2018-01-23 12:45:00 Contest Status : Runnin ...