SQL 连贯操作 [1]
一. 连贯入门
查找到 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]的更多相关文章
- SQL 连贯操作 [2]
1.alias 用于设置数据表别名 $user = M('User'); var_dump($user->alias('anothername')->select()); 这时在SQL中的 ...
- 一对一关联查询时使用relation连贯操作查询后,调用getLastSql()方法输出的sql语句
如题: 一对一关联查询时使用relation连贯操作查询后,调用getLastSql()方法输出的sql语句不是一条关联查询语句. 例如: $list = $db->relation(true) ...
- ci连贯操作的limit两个参数和sql是相反的
ci连贯操作的limit两个参数和sql是相反的 db->where("name =",'mary')->ge() name后面要有个空格否则报错当为一个字段 -> ...
- ThinkPhp 3.2 数据的连贯操作
ThinkPHP模型基础类提供的连贯操作方法(也有些框架称之为链式操作),可以有效的提高数据存取的代码清晰度和开发效率,并且支持所有的CURD操作. 使用也比较简单, 假如我们现在要查询一个User表 ...
- thinkPHP--SQL连贯操作
一.连贯入门 连贯操作使用起来非常简单,比如查找到 id 为 1,2,3,4 中按照创建时间的倒序的前两 位. //连贯操作入门 $user = M('User'); var_dump($user-& ...
- 【转】PHP实现连贯操作
[第一种方案 __call] 我们在使用一些框架(如ThinkPHP)编码的时候,常用到这样的代码. M('User')->where(array('id'=>1))->field( ...
- Laravel框架数据库CURD操作、连贯操作
这篇文章主要介绍了Laravel框架数据库CURD操作.连贯操作.链式操作总结,本文包含大量数据库操作常用方法,需要的朋友可以参考下 一.Selects 检索表中的所有行 $users = DB::t ...
- Laravel框架数据库CURD操作、连贯操作总结
这篇文章主要介绍了Laravel框架数据库CURD操作.连贯操作.链式操作总结,本文包含大量数据库操作常用方法,需要的朋友可以参考下 一.Selects 检索表中的所有行 复制代码代码如下: $use ...
- ThinkPHP第十八天(Widget类的使用,连贯操作where IN用法,缓存S函数使用)
1.Widget类的使用方法: 第一步:在Action同级目录中新建Widget文件夹(独立分组需要自己建立) 第二步:根据不同功能在Widget文件夹中建立不同的Widget类,如热门文章HotWi ...
随机推荐
- Range 函数 与break 用法
range 函数,这个比什么java ,C++的for (int i = 0; i < 5; i++),确实舒服很多. 写这么一句就可以了 for i in range(0,5). 翻译一遍更容 ...
- java之 Timer 类的简单使用案例
(如果您看到本文章务必看结尾!) 第一次用Timer类,记录一下个人理解. 场景:做苹果内容结果验证时,根据苹果支付凭证去苹果官方服务器验证是否支付成功.但因为苹果服务器比较慢,第 ...
- php 5.6以上可以采用new PDD连接数据库的方法。
<?php// @mysqli_connect($db=localhost,// $_cont['root'],// $_cont['root'],// $_cont['demo'],// $_ ...
- Oracle常见的33个等待事件
Buffer busy waits 原因: 当一个会话试图修改一个数据块,但这个数据块正在被另一个会话修改时. 当一个会话需要读取一个数据块,但这个数据块正在被另一个会话读 ...
- NOI模拟赛 #4
好像只有一个串串题可以做... 不会 dp 和数据结构啊 QAQ 10 + 20 + 100 = 130 T1 一棵树,每个点有一个能量的最大容量 $l_i$ 和一个增长速度 $v_i$,每次可以选一 ...
- SQL夯实基础(五):索引的数据结构
数据量达到十万级别以上的时候,索引的设置就显得异常重要,而如何才能更好的建立索引,需要了解索引的结构等基础知识.本文我们就来讨论索引的结构. 二叉搜索树:binary search tree 1.所有 ...
- MMS(mongodb监控工具)
今天好几个人问我如何查看mongodb的连接数,在mongo shell中执行: shard1:PRIMARY> db.serverStatus().connections { "cu ...
- CF884D:Boxes And Balls
浅谈\(Huffman\)树:https://www.cnblogs.com/AKMer/p/10300870.html 题目传送门:https://codeforces.com/problemset ...
- 基于 WebSocket 的 MQTT 移动推送方案
WebSphere MQ Telemetry Transport 简介 WebSphere MQ Telemetry Transport (MQTT) 是一项异步消息传输协议,是 IBM 在分析了他们 ...
- NET代码运行在服务器JS运行在客户端
using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Web;usi ...