一. 连贯入门

查找到 id 为 1,2,3,4 中按照创建时间的倒序的前两位。

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

1、连贯操作入门

$user = M('User');
var_dump($user->where('id in (1,2,3,4)')->order('date DESC')->limit(2)->select());

得到的SQL查询语句为

PS:这里的 where、order 和 limit 方法都是连贯操作方法,所以它们都能返回$user本身,
可以互换位置。而 select 方法不是连贯方法,需要放在最后,用以显示数据集。

2、数组操作

$user = M('User');
var_dump($user->select( array('where'=>'id in (1,2,3,4)', 'limit'=>'2','order'=>'date DESC')));

或者是

$user = M('User');
var_dump($user->select(array('where'=>array('id'=>array('neq','1')),'order'=>'date DESC','limit'=>'2')));

二. 连贯方法

1.where
where 方法支持字符串条件、数组条件(推荐用法)和多次调用

//字符串方式
$user = M('User');
var_dump($user->where('id=1')->select());

//索引数组方式
$user = M('User');
$map['id'] = 1;
var_dump($user->where($map)->select());

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

2.order
order 用于对结果集排序。

//倒序
$user = M('User');
$map['id'] = array('eq', 1);
var_dump($user->order('id desc')->select()); //正序默认或 ASC

//第二排序
var_dump($user->order('id desc,email desc')->select());
PS:先按 id 倒序,再按 email 倒序

这个用法在这个数据库里是没有什么意义的,但是如果是在比较成绩的时候就可以使用了,比如将id换成语文成绩,email换成数学成绩,

当语文成绩是一样的时候,那这时候就比较数学成绩了,这时候才用到两个排序的功能。

//数组形式防止字段和mysql关键字冲突
$user = M('User');
$map['id'] = array('eq', 1);
var_dump($user->order( array('id'=>'DESC'))->select());

使用数组的形式就是能够在SQL查询的时候在user等字段上加上``符号,更安全。

3.feild
feild 方法可以返回或操作字段,可以用于查询和写入操作。

只显示id和user两个字段
$user = M('User');
var_dump($user->field('id, user')->select());

使用SQL函数和别名

$user = M('User');
var_dump($user->field('SUM(id) as nihao, user')->select());

其中 'SUM(id) as nihao 中的nihao为设置的别名,在浏览器中显示为

使用数组参数结合SQL函数

$user = M('User');
var_dump($user->field( array('id','LEFT(user,3)'=>'left_user'))->select());

这时只显示user中数据的前三个字

并且其中的 left_user 也是设置的别名,在SQL查询语句中为:

获取所有字段

$user = M('User');
var_dump($user->field()->select());

4.limit
limit 方法主要用于指定查询和操作的数量。

限制结果集数量

$user = M('User');
var_dump($user->limit(2)->select());

分页查询

$user = M('User');
var_dump($user->limit(0,2)->select());

5.page
page 方法完全用于分页查询。

$user = M('User');
var_dump($user->page(1,2)->select()); //第一个1是页码数,第二个2是条数

6.table
table 方法用于数据表操作,主要是切换数据表或多表操作。

切换数据表

$user = M('User');
var_dump($user->table('think_info')->select());

获取简化表名

$user = M('User');
var_dump($user->table('__USER__')->select());

注意的是,因为数据表名为think_user,所以这里是__USER__,即USER两边都是两个下划线,且必须大写,这里的USER是数据表的后缀名

多表查询

$user = M('User');
var_dump($user->field('a.id,b.id')->table('__USER__ a,__INFO__ b')->select());

也就是获得两个数据表中的id,在浏览器中为

在SQL查询语句中为

多表查询,使用数组形式避免关键字冲突

$user = M('User');
var_dump($user->field('a.id,b.id')->table( array('think_user'=>'a',
'think_info'=>'b'))->select());

这时,即为查询的数据表加上``符号。

alias 用于设置数据表别名

$user = M('User');
var_dump($user->alias('a')->select());

不使用别名的时候:

使用别名的时候

都没有了``符号,也不知道是用来干嘛的

SQL 连贯操作 [1]的更多相关文章

  1. SQL 连贯操作 [2]

    1.alias 用于设置数据表别名 $user = M('User'); var_dump($user->alias('anothername')->select()); 这时在SQL中的 ...

  2. 一对一关联查询时使用relation连贯操作查询后,调用getLastSql()方法输出的sql语句

    如题: 一对一关联查询时使用relation连贯操作查询后,调用getLastSql()方法输出的sql语句不是一条关联查询语句. 例如: $list = $db->relation(true) ...

  3. ci连贯操作的limit两个参数和sql是相反的

    ci连贯操作的limit两个参数和sql是相反的 db->where("name =",'mary')->ge() name后面要有个空格否则报错当为一个字段 -> ...

  4. ThinkPhp 3.2 数据的连贯操作

    ThinkPHP模型基础类提供的连贯操作方法(也有些框架称之为链式操作),可以有效的提高数据存取的代码清晰度和开发效率,并且支持所有的CURD操作. 使用也比较简单, 假如我们现在要查询一个User表 ...

  5. thinkPHP--SQL连贯操作

    一.连贯入门 连贯操作使用起来非常简单,比如查找到 id 为 1,2,3,4 中按照创建时间的倒序的前两 位. //连贯操作入门 $user = M('User'); var_dump($user-& ...

  6. 【转】PHP实现连贯操作

    [第一种方案 __call] 我们在使用一些框架(如ThinkPHP)编码的时候,常用到这样的代码. M('User')->where(array('id'=>1))->field( ...

  7. Laravel框架数据库CURD操作、连贯操作

    这篇文章主要介绍了Laravel框架数据库CURD操作.连贯操作.链式操作总结,本文包含大量数据库操作常用方法,需要的朋友可以参考下 一.Selects 检索表中的所有行 $users = DB::t ...

  8. Laravel框架数据库CURD操作、连贯操作总结

    这篇文章主要介绍了Laravel框架数据库CURD操作.连贯操作.链式操作总结,本文包含大量数据库操作常用方法,需要的朋友可以参考下 一.Selects 检索表中的所有行 复制代码代码如下: $use ...

  9. ThinkPHP第十八天(Widget类的使用,连贯操作where IN用法,缓存S函数使用)

    1.Widget类的使用方法: 第一步:在Action同级目录中新建Widget文件夹(独立分组需要自己建立) 第二步:根据不同功能在Widget文件夹中建立不同的Widget类,如热门文章HotWi ...

随机推荐

  1. hzau 1208 Color Circle(dfs)

    1208: Color Circle Time Limit: 1 Sec  Memory Limit: 1280 MBSubmit: 289  Solved: 85[Submit][Status][W ...

  2. ural 2013 Neither shaken nor stirred

    2013. Neither shaken nor stirred Time limit: 1.0 secondMemory limit: 64 MB The ACM ICPC regional con ...

  3. uva11078 - Open Credit System(动态维护关键值)

    这道题使用暴力解法O(n*n)会超时,那么用动态维护最大值可以优化到O(n).这种思想非常实用. #include<iostream> #include<cstdio> #in ...

  4. linux进程学习-创建新进程

    init进程将系统启动后,init将成为此后所有进程的祖先,此后的进程都是直接或间接从init进程“复制”而来.完成该“复制”功能的函数有fork()和clone()等. 一个进程(父进程)调用for ...

  5. python_根据"词库"进行“词联想”

    输入法中,当你输入一个字的时候,输入法就能猜出你要输入什么词.这就是词联想.现在,再python中简单实现类似这样的功能:根据制定好的词库,输入一个新的词,帮助实现词联想.其中分词用了jieba包. ...

  6. 1110. Complete Binary Tree (25)

    Given a tree, you are supposed to tell if it is a complete binary tree. Input Specification: Each in ...

  7. Til the Cows Come Home (最短路模板题)

    个人心得:模板题,不过还是找到了很多问题,真的是头痛,为什么用dijkstra算法book[1]=1就错了..... 纠结中.... Bessie is out in the field and wa ...

  8. 洛谷【P2669】NOIP2015普及组 T1金币

    我对模拟的理解:http://www.cnblogs.com/AKMer/p/9064018.html 题目传送门:https://www.luogu.org/problemnew/show/P266 ...

  9. Nginx解决错误413 Request Entity Too Large

    最近一个项目当中,要求上传图片,并且限制图片大小,虽然在laravel当中已经添加了相关的表单验证来阻止文件过大的上传,然而当提交表单时,还没轮到laravel处理,nginx就先报错了.当你仔细看报 ...

  10. 浅析TCP /UDP/ IP协议

    互连网早期的时候,主机间的互连使用的是NCP协议.这种协议本身有很多缺陷,如:不能互连不同的主机,不能互连不同的操作系统,没有纠错功能.为了改善这种缺点,大牛弄出了TCP/IP协议.现在几乎所有的操作 ...