ThinkPHP数据库常见查询

上传人:jiups****uk12 文档编号:57196083 上传时间:2018-10-19 格式:PPT 页数:51 大小:496KB
返回 下载 相关 举报
ThinkPHP数据库常见查询_第1页
第1页 / 共51页
ThinkPHP数据库常见查询_第2页
第2页 / 共51页
ThinkPHP数据库常见查询_第3页
第3页 / 共51页
ThinkPHP数据库常见查询_第4页
第4页 / 共51页
ThinkPHP数据库常见查询_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《ThinkPHP数据库常见查询》由会员分享,可在线阅读,更多相关《ThinkPHP数据库常见查询(51页珍藏版)》请在金锄头文库上搜索。

1、ThinkPHP框架 (七),CSDN 李伟,知识回顾,ThinkPHP 系统变量的基本概念 ThinkPHP 如何使用系统变量 ThinkPHP 模板替换的基本概念 ThinkPHP 模板替换的方法 ThinkPHP 中debug调试模式简介 ThinkPHP 中Trace信息定制,内容摘要,ThinkPHP 中常见查询方法 ThinkPHP区间查询方法 ThinkPHP 统计查询方法 ThinkPHP定位查询方法 ThinkPHP 原生SQL查询方法,ThinkPHP 常见查询方法,select:普通查询,同 findAll() 方法 select() 是 ThinkPHP 中最常用的普通

2、查询方法,得到的是一个二维数组。findAll() 为 select() 方法的别名,并建议使用 select() 读取操作,ThinkPHP 常见查询方法,field() 查询指定字段 select() 方法默认是查询所有字段的数据,如果要查询某个或某些字段,就需要使用 filed() 方法。 filed() 是属于 ThinkPHP 连贯操作 中的一个方法,如在上面的例子中,只查询用户名和电子邮件地址,则查询方法对应更改为: $list = $Dao-field(username,email)-select();,ThinkPHP Where条件,使用查询条件使用 ThinkPHP 连贯操

3、作 可以很方便的对数据查询使用查询条件。 实例: where() 条件上述查询的就是 username=Admin 这个条件的数据,ThinkPHP Where条件,Where条件字符串方式 字符串方式条件即以字符串的方式将条件作为 where() 方法的参数, 例子:,ThinkPHP Where条件,字符串方式设定的条件即为实际 SQL 执行的条件,也是最接近原生 SQL 的方式,ThinkPHP 不会对条件做任何(类型上的)检查,ThinkPHP Where条件,Where条件数组方式 在大多数情况下推荐使用索引数组或者对象来作为查询条件,因为这样会更加安全 使用数组方式的 where

4、条件例子:,ThinkPHP Where条件,Where条件使用对象 where 方法也可以使用对象来设置查询或操作条件,可以使用任何对象。以 stdClass 内置对象为例:使用对象方式和使用数组方式的条件效果是相同的,并且是可以互换的,ThinkPHP Where条件,字符串方式设定的条件即为实际 SQL 执行的条件,也是最接近原生 SQL 的方式,ThinkPHP 不会对条件做任何(类型上的)检查,ThinkPHP 常见查询方法,ORDER BY 排序 在查询中使用 ORDER BY 对数据进行排序:这个例子就是数据按照 ORDER BY uid DESC 进行查询,而 order()

5、方法中的参数意义跟 SQL 语句中的意义完全一致。,ThinkPHP 常见查询方法,LIMIT 限制 在查询中使用 LIMIT 限定数据返回的记录数:这个例子就是将第 5-10 条记录取出,limit() 方法内的参数意义跟 SQL 语句中的 LIMIT 完全一致。,ThinkPHP 常见查询方法,find()ThinkPHP中find() 方法是和 select() 用法类似的一个方法,不同之处 find() 查询出来的始终只有一条数据,即系统自动加上了 LIMIT 1 限制。 当确认查询的数据记录只能是一条记录时,建议使用 find() 方法查询,如用户登录账号检测:,ThinkPHP 常

6、见查询方法,用户名检测实例:,ThinkPHP 常见查询方法,find() 主键查询 当 find() 查询的条件参数为表主键时,可以直接将参数写入方法内,如:user 表主键为 uid,该例子将查询 uid=1 的数据,这是 ActiveRecords 模式实现之一,简洁直观,ThinkPHP getBy动态查询,getBy动态查询 ThinkPHP getBy动态查询是一个魔术方法,可以根据某个字段名称动态得到对应的一条数据记录。 根据用户名(username)查询对应的用户资料记录:,ThinkPHP getBy动态查询,方法中传入的参数是查询的字段对应的值,上面例子执行的 SQL 语句

7、为:SELECT * FROM user WHERE username = Admin LIMIT 1请注意,在getBy之后紧跟着的字段名称,首字母必须大写。对于如 user_name 这样的字段名称,以驼峰法自动识别下划线,即$user = $Dao-getByUserName(Admin);,ThinkPHP getField 方法获取字段 数组,getField() ThinkPHP getField() 方法是专门用于获取某个字段的值或者多个字段的索引数组。该方法与 field方法 不同,是一个独立的方法而不需要再使用 find 或者 select 。,ThinkPHP getFie

8、ld 方法获取字段 数组,实例 当参数字段只有一个时,查询结果只返回一条记录,即添加了 LIMIT 1 条件:,ThinkPHP getField 方法获取字段 数组,例子2,使用多个字段:该查询结果返回的是一维关联数组,键值为 fileds 参数中的第一个字段的值,ThinkPHP getField 方法获取字段 数组,例子3,使用多个字段,添加查询条件并使用 | 分隔符:结果如下:,ThinkPHP 区间查询,ThinkPHP 支持对某个字段的区间查询。 例子1:,ThinkPHP 区间查询,上例中,构造的查询条件:得到的实际查询条件为:,ThinkPHP 区间查询,区间查询条件中,支持各

9、种普通查询中的一个或多个表达式 对于多个表达式,逻辑上可以是 AND、OR 或者 XOR,如果忽略,默认为 AND。,ThinkPHP 区间查询,使用其他表达式,ThinkPHP 统计查询,统计查询 在应用中我们经常会用到一些统计数据,例如当前所有(或者满足某些条件)的用户数、所有用户的最大积分、学生的平均成绩等等,ThinkPHP 为这些统计操作提供了一系列的内置方法:,ThinkPHP 统计查询,count():统计数据行数 max():统计某个字段最大数据 min():统计某个字段最小数据 avg():统计某个字段平均数据 sum():统计某个字段数据之和 上述统计查询方法都是独立的方法

10、且支持连贯操作,ThinkPHP 统计查询,count() count() 方法用于统计数据行数。,ThinkPHP 统计查询,max() max() 方法用于统计某个字段最大数据。 统计用户最大积分例子:,ThinkPHP 统计查询,min() min() 统计某个字段最小数据。 获取积分大于 0 的用户的最小积分例子,ThinkPHP 统计查询,avg() avg() 统计某个字段平均数据。 获取用户的平均积分例子:,ThinkPHP 统计查询,sum() sum() 统计某个字段数据之和。 统计积分排名前 10 名用户的积分之和:,ThinkPHP 定位查询,定位查询 ThinkPHP

11、支持对数据的定位查询: getN():取得查询结果中的某个位置的记录 first():取得符合条件的第一条记录 last():取得符合条件的最后一条记录 定位查询是内置于高级模型类(AdvModel)里的方法,是独立的方法且支持连贯操作。,ThinkPHP 定位查询,如果直接使用M或D实例化模型会提示:Model:getN您所请求的方法不存在!因此要使用定位查询需要加载高级模型类,ThinkPHP 定位查询,两种方法加载高级模型类 1、使用动态模型切换 switchModel() 方法: switchModel(“Adv“) 2、在用户模型里面继承高级模型类: class UserModel

12、extends AdvModel ,ThinkPHP 定位查询 getN(),switchModel() 下面是使用 switchModel() 方法定位查询的例子:上例中用于取得 uid0 的第3条记录 getN() 中的参数是 LIMIT 中的第一个参数(游标偏移量)。,ThinkPHP 定位查询 getN(),AdvModel 在 Lib/Model/UserModel.class.php 文件中定义模型如下: 由于不需要再模型类实现任何逻辑,因此可以是一个空模型。控制器中代码如下:,ThinkPHP 定位查询 getN(),直接使用getN()方法执行的效果和使用 switchMode

13、l() 一致。,ThinkPHP 定位查询 first(),first() first() 方法用于获取符合条件的第一条记录,是高级模型类里面的方法,可以参考 getN() 的用法。 下面是使用 switchModel() 方法定位查询的例子:该方法实际是执行 getN(0) 方法。,ThinkPHP 定位查询 last(),last() 方法用于获取符合条件的最后一条记录,是高级模型类里面的方法,可以参考 getN() 的用法。 下面是使用 switchModel() 方法定位查询的例子:该方法实际是执行 getN(-1) 方法。,ThinkPHP 原生SQL查询,原生SQL查询 尽管Thi

14、nkPHP内置了大量的数据操作方法,但ThinkPHP仍保留了对原生SQL查询的支持,以便满足复杂查询的需要和一些特殊的数据操作。 SQL查询的返回值是直接返回DB类的查询结果,没有做任何的处理,而且可以支持查询缓存。,ThinkPHP 原生SQL查询,原生SQL查询有 query() 和 execute() 两个方法: query():用于 SQL 查询操作,并返回符合查询条件的数据集 execute():更新和写入数据的 SQL 操作,返回影响的记录数,ThinkPHP 原生SQL查询,query() query() 方法是用于 SQL 查询操作,和select()方法一样返回符合查询条件

15、的数据集。 例子:,ThinkPHP 原生SQL查询,execute() execute() 方法用于更新和写入数据的 SQL 操作(注:非查询操作,无返回数据集),返回影响的记录数。 例子:,ThinkPHP 原生SQL查询,如果查询比较复杂或一些特殊的数据操作不能通过 ThinkPHP 内置的 ORM 和 ActiveRecord 模式实现时,就可以通过直接使用原生 SQL 查询来实现。 注意:以上都是 user 没有表前缀的例子,在查询语句中,查询的表应该写实际的表名字(包括前缀)。,ThinkPHP 原生SQL查询,小技巧 原生 SQL 查询需要在查询语句中写上对应的表名,如果表名有改

16、动的时候,就需要逐行去更改 SQL 语句中的表名字,这样不免麻烦。ThinkPHP 提供了一个小技巧来帮助解决这个问题。 在 SQL 语句中,以 _TABLE_ 来替代真实的表名,而在实例化模型时,仍以表名为参数,如:,ThinkPHP 原生SQL查询,系统在解析的时候会自动替换成当前模型对应的表名,这样就可以做到即使表名有所变化,只需修改实例化对应的表名即可而不用修改原生的 SQL 语句。,有问有答,有问有答,www.CSDN.net,北京市海淀区东北旺西路8号中关村软件园9号楼国际软件大厦2区三层100085联系电话:010-82826816 82826216 传真:82826021-118,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号