




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【数据库操作】【连接数据库配置】2014年8月23日9:42convertion.phpconfig.php1. 在config.php做数据库连接配置2. 制作model模型a. model本身就是一个类文件b. 数据库中的每个数据表都对应一个model模型文件c. 最简单的数据model模型类3. 字段缓存设置tp框架执行过程中会使用到数据表中的字段信息,通过sql语句可以查询”show colums from table” ,处于性能考虑,可以把字段缓存,避免每次重复执行sql语句。4. 可以根据情况对当前的model模型进行个性化设置对于一些特殊命名的表(不都是相同的前缀的),以下两种方法都可以5. 在入口文件定义一个调试输出函数,便于系统开发使用【实例化Model的三种方式】2014年8月24日10:141. $goods = new 命名空间GoodsModel(); (ModelGoodModel)2. $goods = D(模型标志); a. $goods = D(“Goods”);b. 该$goods是父类Model(ThinkModel)的对象,但是操作的数据表还是sw_goodsc. $obj = D(); 实例化Model对象,没有具体操作数据表,与M()方法效果一致3. $obj = M(); a. 实例化父类Modelb. 可以直接调用父类Model里边的属性,获得数据库相关操作c. 自定义model就是一个空壳,没有必要实例化自定义modeld. $obj = M(数据表标志); 实例化Model对象,实际操作具体的数据表$obj = D(标志);$obj = D();$obj = M(标志);$obj = M();D()和M()方法的区别:前者是tp3.1.3里边对new操作的简化方法;后者在使用就是实例化Model父类两者都在函数库文件定义ThinkPHP/Common/functions.php注意:如果没有对应的model模型文件类,也可以直接实例化model对象进行操作D()和M()方法都可以实例化操作一个没有具体model模型类文件的数据表。【使用原生SQL】2014年8月25日17:57TP的模型可以支持原生SQL操作,提供了query和execute两个方法,为什么原生SQL还要区分两个方法呢,原因有两个:1、返回类型不同query用于查询,返回的是数据集,和select或者findall一样,所以可以直接在模板里面使用volist标签输出query的查询结果execute用于写操作,返回的是状态或者影响的记录数2、读写统计需要为了便于统计当前的数据读写次数,把数据库的读和写操作分开(对应的就是query和execute)使用原生SQL很简单,我们甚至不需要实例化任何的模型,例如:$Model = newModel(); /实例化一个空模型下面的方法是等效的$Model =D();或者$Model =M();/下面执行原生SQL操作$Model-query(select * from think_user where status=1);$Model-execute(update think_user set status=1 where id=1);如果你实例化了某个模型,仍然可以执行原生SQL操作,不受影响,例如:$User =D(User);$User-query(select * from think_user where status=1);$User-execute(update think_user set status=1 where id=1);在这种情况下面,我们可以简化SQL语句的写法,例如:$User-query(select * from _TABLE_ where status=1);$User-execute(update _TABLE_ set status=1 where id=1);系统会自动把_TABLE_替换成当前模型对应的数据表名称,实际的数据表由模型决定。通常来说,我们都是使用原生SQL操作实现一些ORM和CURD比较难实现的操作,另外,如果SQL不复杂的话原生SQL的效率和连贯操作的效率差别是微乎其微的,TP本身的ORM实现也是相当高效的。【数据查询】2014年8月24日10:14select()是数据模型的一个指定方法,可以获得数据表的数据信息返回一个二维数组信息,当前数据表的全部数据信息1. 配置smartya. 配置变量信息 i. convertion.phpii. Behavior行为配置变量信息(页面底部日志显示配置、smarty配置)iii. 系统程序里边有一些零散的配置信息 b. 在config.php里边配置smarty使用设置模板引擎配置参数位置(不能直接修改,在config.php里边重写):2. 具体使用(从tp引擎变为smarty引擎)a. css样式如果有,需要使用literal标签禁止smarty解析b. 关键字$Think 变为 $smartyc. tp引擎会对关键常量进行替换例如:_CONTROLLER_ _MODULE_smarty引擎不给替换,需要设置为:$smarty.const._CONTROLLER_【各种查询条件设置】2014年8月24日10:14$obj = D(); 创建对象$obj - select(); 查询数据select 字段,字段 from 表名 where 条件 group 字段 having 条件 order 排序 limit 限制条数;SELECT%DISTINCT%FIELD%FROM %TABLE%JOIN%WHERE%GROUP%HAVING%ORDER%LIMIT% %UNION%COMMENT%$obj - field(字段,字段); 查询指定字段$obj - table(数据表); 设置具体操作数据表$obj - where(参数); 参数就是正常sql语句where后边的条件信息例如:( “goods_price 100 and goods_name like 三%”)$obj - group(字段); 根据字段进行分组查询$obj - having(参数条件); having 条件设置$obj - order(price desc/asc) 排序查询$obj - limit(偏移量,条数) 限制查询的条数sql语句里边具体的条件设置在tp框架model模型里边体现为具体的方法操作以上方法理论上是父类Model的对应方法父类model具体存在方法: field() where() limit()还有一些方法在_call()自动调用函数里边: table() group() order() having()在_call()魔术方法里边会判断当前的执行方法是否是一个method属性的元素信息,如果存在就会执行执行以上多个方法是同时使用多个进行条件显示(并且没有顺序要求)$obj - limit(5)-field(id,name)-order(price asc) - table(sw_goods)-select();以上许多方法执行没有顺序要求,许多方法执行后都是把具体的参数赋予到model属性options里边,最后根据options拼装sql语句。【查询数据信息】2014年8月25日17:58$info = $goods - where()-field(字段)-select();select()方法1. 返回一个二维数组信息2. 返回全部数据表信息3. 给该方法传递参数 1. select(30) 查询主键值等于30的记录信息2. select(“10,12,14”) 查询主键值在10、12、14范围的记录信息goods_id in(10,12,14)1. find()如果我们查询的结果只有一个信息(一维数组),使用select()会返回一个二维数组为了使用方便我们会希望返回一个一维数组,这时候可使用find()方法2. having()方法设置查询条件,where()设置查询条件having 和 where区别1. 使用有先后顺序2. where price100 having price1003. where 设置条件,字段必须是数据表中存在的字段 4. having 设置条件,字段必须是select语句查询出来的字段可以使用6. 相关聚合函数 count() sum() avg() max() min()以上聚合函数是最后被调用的方法以上方法可以结合具体条件方法使用例如:$goods - where(goods_price 1000)-count(); 大于1000元的商品的总数目【实现数据添加add】2014年8月25日17:57select()add() 该方法返回被添加的新记录的主键id值save()delete()两种方式实现数据添加1. 数组方式数据添加$goods = D(“Goods”);$arr = array(goods_name=iphone5s,goods_weight=109);/注意:goods_name和goods_weight是数据表中字段名称$goods - add($arr);2. AR方式实现数据添加a. ActiveRecord 活跃记录b. AR规定了程序与数据库之间的关系c. 什么是AR:d. 一个数据表对应一个类modele. 一条数据记录对应类的一个对象f. 每个字段对应该对象的具体属性g. tp框架的AR是假的$goods = D(“Goods”);$goods - goods_name = “htc_one”;$goods - goods_price = 3000;$goods - add();以上两种方式:数组、AR,最后add都要把新记录的主键id值返回【收集表单数据入库操作】2014年8月25日17:571. 制作一个表单2. 通过$_POST收集信息3. 通过create()方法实现数据收集,该方法对于非法的字段会自动进行过滤4. 在create()收集表单方法内部会自动过滤非法的字段信息【数据修改操作】2014年8月25日17:57select()add()save() 实现数据修改,返回受影响的记录条数delete()具体有两种方式实现数据修改,与添加类似(数组、AR方式)1. 数组方式a. $goods = D(“Goods”);b. $ar = array(goods_id=100,goods_name=lenovo手机,goods_price=1200);c. $goods -where(goods_id50)- save($ar);2. AR方式a. $goods = D(“Goods”);b. $goods - goods_id = 53;c. $goods - goods_name = “三星手机”;d. $goods - goods_price = 2000;e. $goods - where(goods_price10000)-save();以上两种方式如果可行,即要修改全部数据以上sql语句从技术上可行,从业务上不可行(事故)tp框架有智能考虑,以上情况的sql语句不被允许执行。如何执行:1. 明确告诉系统那条sql语句被update更新2. 可以设置where进行sql语句更新操作save() 方法返回值0:之前没有问题,执行前后数据没有变化自然数:受影响的记录条数false:执行失败【数据删除及执行原生sql语句】2014年8月25日17:58select()add()save() delete() 返回受影响的记录条数$goods - delete(30); 删除主键值等于30的记录信息$goods - delete(“10,12,13”); 删除主键值等于10 12 13的三条记录$goods - where(“goods_id60”)-delete() 把符合条件的记录都给删除一般是在表中增加delete字段,删除标志执行原生sql语句1. 查询语句query() 返回一个二维数组信息2. 添加、修改、删除 execute() 返回受影响的记录条数$goods = D(“Goods”);$sql = “select * from sw_goods”;$rst = $goods - query($sql);$sql = “select goods_category_id,avg(goods_price) from sw_goods group by goods_category_id having avg(goods_price)1000”;$goods - query($sql);$sql = “update sw_goods set goods_name = htc_two where goods_id=100”;$goods - execute($sql);返回false则没有正确执行【数据修改具体实现】2014年8月25日17:58通过路由给一个操作方法传递参数http:/网址/index.php/模块/控制器/方法upd/变量名1/值/变量名2/值/变量名3/值 以上路由是通过get形式给指定的操作传递了三个参数信息原则三个参数信息接收的时候通过$_GET接收即可例如:$_GET变量名1; include()以上参数信息接收太直白,不安全,需要按照框架规则使用下边的方式接收get参数信息http:/网址/index.php/Admin/Goods/upd/name/tom/age/25/addr/beijingfunction upd($name,$age,$addr)$name;$age;$addr;以上参数表述,如果在请求的时候没有按照规则传递参数,那么当前方法禁止访问。(除非参数有默认值)修改商品信息步骤:1. 在“修改”按钮处把被修改商品id信息通过get形式传递给upd操作2. 在upd方法里边制作形式参数$goods_id,接收服务器给传递的get变量goods_id3. 在修改表单里边制作隐藏域goods_id,避免tp框架禁止修改语句执行4. 在upd操作方法内部有两个逻辑:展现表单、收集表单【表单验证】2014年8月25日17:58javascriptjquery 在服务器端通过tp框架实现表单验证用户名、密码、重复密码、邮箱、qq、手机号码、爱好、学历具体步骤:1. 制作表单2. 表单form数据通过create()方法收集(验证功能要求我们必须通过create()方法收集数据)3. 自定义数据model模型类实现具体验证规则(自动验证)4. $_validate属性定义时一个数组信息,内部每个小的单元还是一个数组5. array(字段,验证规则,错误提示,验证条件,附加规则,验证时间)6. 验证规则:require、email7. 验证条件:i. 0 字段在$_POST里边存在就验证 ii. 1 必须验证iii. 2 值不为空才验证f) 附加规则:regex in callback 【用户注册完善】implode()把数组元素用逗号给合并起来代码部分:【create】2014年8月25日17:58对收集的数据进行验证和过滤验证则是重写 protected $_validate=array()定义规则过滤则是讲不是数据库中的该表字段进行过滤public function register() $user=new ModelUserModel(); /$user=D(User); /判断表单是否提交 if(!empty($_POST) if(!$val=$user-create() /验证失败 /echo 验证失败; /返回错误信息 /p($user-getError(); $this-error(注册失败,U(User/register); else /create是将收集到的数据转变为数据库属性 /爱好是数组,变为字符串存入数据库 /使用AR方式时可以直接使用add $user-user_hobby=implode(,$_POSTuser_hobby); $res=$user-add(); if($res) /echo success; $this-success(注册成功,U(Index/index); else /echo failure; $this-error(注册失败,U(User/register); else$this-display(); 【数据库总结】2014年8月25日17:581.3种实例化model模型方法a)new 命名空间GoodsModel();b)D(“模型标志Goods”) (之前版本会实例化自定义model对象,目前都实例化Model基类对象)i.没有参数实例化一个Model对象、有参数也实例化一个Model对象操作goods数据表c)M(“模型标志Goods”)i.没有参数实例化一个Model对象、有参数也实例化一个Model对象操作goods数据表2.数据库查询及连贯操作查询a)select()b)select(10) 主键值等于10的记录c)select(“20,21,22”) 主键值 in 20,21,22 的三条记录d)find(4) 主键值等于4的记录e)select()方法返回二维数组,find方法返回一维数组f)连贯操作查询方法:g)field
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年化工工艺操作安全认证考试预测题及培训教程
- 2025年初识专利挖掘和专利申请流程模拟题集及答案详解
- 2025年养老护理员高级面试指南认知症照护方向模拟题解析
- 2025年防爆通讯及仪表项目建议书
- 2025年舒血宁注射液项目发展计划
- 抢修安全知识培训课件
- 辽宁省普通高中2025-2026学年高二上学期期初开学考试模拟(2)数学试卷(含解析)
- 2025年无菌包装用包装材料项目合作计划书
- 2025年再生塑料:PVC再生料项目发展计划
- 徭役考试试卷及答案
- 中学藏文散文教学课件大纲
- 第4课《乡愁》课件-2025-2026学年统编版语文九年级上册
- 兵役法教学课件
- 第六届山东省无人机技术与应用职业技能竞赛(无人机测绘操控员)题库(含答案)
- 2025-2026学年人教版小学数学四年级上册教学计划及进度表
- 2025年秋季学期(统编版)二年级上册语文教学工作计划及教学进度表
- 2025年全国《质量知识竞赛》题库及答案
- 2025年呼伦贝尔农垦集团有限公司招聘笔试参考题库含答案解析
- 《铁路调车工作》课件
- 数据挖掘(第2版)PPT全套完整教学课件
- (完整版)五年级数学思维拓展课程整体设计
评论
0/150
提交评论