tp框架数据查询,增删改
select()是数据模型的一个指定方法,可以获得数据表的数据信息
返回一个二维数组信息,当前数据表的全部数据信息
$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语句。
$info = $goods -> where()->field(字段)->select();
select()方法
1. 返回一个二维数组信息
2. 返回全部数据表信息
3. 给该方法传递参数
a) select(30) 查询主键值等于30的记录信息
b) select(“10,12,14”) 查询主键值在10、12、14范围的记录信息
- find()如果我们查询的结果只有一个信息,使用select()会返回一个二维数组
为了使用方便我们会希望返回一个一维数组,这时候可使用find()方法
- having()方法设置查询条件,where()设置查询条件
6. 相关聚合函数 count() sum() avg() max() min()
以上聚合函数是最后被调用的方法
以上方法可以结合具体条件方法使用
例如:$goods -> where(‘goods_price >1000’)->count(); 大于1000元的商品的总数目
【数据添加】
add() 该方法返回被添加的新记录的主键id值
两种方式实现数据添加
- 数组方式数据添加
$goods = D(“Goods”);
$arr = array(‘goods_name’=>’iphone5s’,’goods_weight’=>’109’);
//注意:goods_name和goods_weight是数据表中字段名称
$goods -> add($arr);
- AR方式实现数据添加
a) ActiveRecord 活跃记录
b) AR规定了程序与数据库之间的关系
c) 什么是AR:
d) ① 一个数据表对应一个类model
e) ② 一条数据记录对应类的一个对象
f) ③ 每个字段对应该对象的具体属性
g) tp框架的AR是假的
$goods = D(“Goods”);
$goods -> goods_name = “htc_one”;
$goods -> goods_price = 3000;
$goods -> add();
以上两种方式:数组、AR,最后add都要把新记录的主键id值返回
【收集表单数据入库操作】
- 制作一个表单
- 通过$_POST收集信息
- 通过create()方法实现数据收集,该方法对于非法的字段会自动进行过滤
注意:一个add控制器实现两个逻辑,一个是打出添加页面,一个是向数据库添加内容
注意:如果是主键值重复,这种错误会导致error()方法不跳转页面直接抛出错误信息,这是新版本问题,如果想要跳转,找到
【数据修改操作】
save() 实现数据修改,返回受影响的记录条数
具体有两种方式实现数据修改,与添加类似(数组、AR方式)
- 数组方式
a)
$goods = D(“Goods”);
b)
$ar = array(‘goods_id’=>100,‘goods_name’=>’lenovo手机’,’goods_price’=>1200);
c)
$goods ->where(‘goods_id>50’)->
save($ar);
- AR方式
a)
$goods = D(“Goods”);
b)
$goods ->
goods_id = 53;
c)
$goods -> goods_name = “三星手机”;
d)
$goods -> goods_price =
2000;
e)
$goods -> where(‘goods_price>10000’)->save();
以上两种方式如果可行,即要修改全部数据
以上sql语句从技术上可行,从业务上不可行(事故)
tp框架有智能考虑,以上情况的sql语句不被允许执行。
如何执行:
① 明确告诉系统那条sql语句被update更新
② 可以设置where进行sql语句更新操作
save()
方法返回值
0:之前没有问题,执行前后数据没有变化
自然数:受影响的记录条数
false:执行失败
数据修改具体实现:
通过路由给一个操作方法传递参数
http://网址/index.php/模块/控制器/方法upd/变量名1/值/变量名2/值/变量名3/值
以上路由是通过get形式给指定的操作传递了三个参数信息
$_POST方式也可以
原则三个参数信息接收的时候通过$_GET接收即可
例如:$_GET[‘变量名1’];
以上参数信息接收太直白,不安全,需要按照框架规则使用下边的方式接收get参数信息
http://网址/index.php/Admin/Goods/upd/name/tom/age/25/addr/beijing
function upd($name,$age,$addr){
$name;
$age;
$addr;
}
以上参数表述,如果在请求的时候没有按照规则传递参数,那么当前方法禁止访问。
(除非参数有默认值)
修改商品信息步骤:
- 在“修改”按钮处把被修改商品id信息通过get形式传递给upd操作
- 在upd方法里边制作形式参数$goods_id,接收服务器给传递的get变量goods_id
- 在修改表单里边制作隐藏域goods_id,避免tp框架禁止修改语句执行
- 在upd操作方法内部有两个逻辑:展现表单、收集表单
【数据删除及执行原生sql语句】
delete() 返回受影响的记录条数
$goods -> delete(30); 删除主键值等于30的记录信息
$goods -> delete(“10,12,13”);
删除主键值等于10 12
13的三条记录
$goods -> where(“goods_id>60”)->delete() 把符合条件的记录都给删除
tp框架数据查询,增删改的更多相关文章
- 0801 am使用tp框架对数据库增删改查
增添数据,3种方法 function Text3() { $m=D("info"); //1.使用数组 $attr = array( "code"=>&q ...
- Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查
本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...
- Mybatis框架基于注解的方式,实对数据现增删改查
编写Mybatis代码,与spring不一样,不需要导入插件,只需导入架包即可: 在lib下 导入mybatis架包:mybatis-3.1.1.jarmysql驱动架包:mysql-connecto ...
- MongoDB数据访问[C#]附源码下载(查询增删改) 转载
安装完MongoDBhttp://localhost:28017/监测是否成功! vs 2008 C# MongoDB 源代码下载地址:http://download.csdn.net/source/ ...
- python 全栈开发,Day62(外键的变种(三种关系),数据的增删改,单表查询,多表查询)
一.外键的变种(三种关系) 本节重点: 如何找出两张表之间的关系 表的三种关系 一.介绍 因为有foreign key的约束,使得两张表形成了三种了关系: 多对一 多对多 一对一 二.重点理解如果找出 ...
- mysq表的三种关系,数据的增删改以及单表多表查询
一丶三种关系 分析步骤: #.先站在左表的角度去找 是否左表的多条记录可以对应右表的一条记录,如果是,则证明左表的一个字段foreign key 右表一个字段(通常是id) #.再站在右表的角度去找 ...
- Spring JdbcTemplate框架搭建及其增删改查使用指南
Spring JdbcTemplate框架搭建及其增删改查使用指南 前言: 本文指在介绍spring框架中的JdbcTemplate类的使用方法,涉及基本的Spring反转控制的使用方法和JDBC的基 ...
- django学习-12.访问不同url/接口地址实现对指定数据的增删改查功能
1.前言 通过前面博客[django学习-10.django连接mysql数据库和创建数据表]里的操作,我们已经成功在数据库[hongjingsheng_project]里创建了一张数据表[hello ...
- dbutils中实现数据的增删改查的方法,反射常用的方法,绝对路径的写法(杂记)
jsp的三个指令为:page,include,taglib... 建立一个jsp文件,建立起绝对路径,使用时,其他jsp文件导入即可 导入方法:<%@ include file="/c ...
随机推荐
- 一款易用、高可定制的vue翻页组件
一款易用.高可定制的vue翻页组件 在线体验:pages.cixi518.com 使用 npm i vo-pages --save vo-pages组件父元素必须设置固定高度并填写属性overflow ...
- ceph-状态监测-脚本
http://www.tang-lei.com/2018/06/05/ceph-%E7%8A%B6%E6%80%81%E7%9B%91%E6%B5%8B-%E8%84%9A%E6%9C%AC/ 为了能 ...
- sql 用语句还原多数据文件的数据库
/* 还原bak数据库文件*/ RESTORE DATABASE userdb_cs /*还原为userdb名的新数据库*/ FROM DISK = 'D:\工作资料\数据库文件\userdb.bak ...
- 4412 make menuconfig和make
一.Menuconfig的操作 • Linux编译器通过.config文件确认哪些代码编译进内核,哪些被裁减掉• menuconfig是生成.config的一个工具• 在Linux发展过程中,配置内核 ...
- CodeForces - 1051D (线性DP)
题目:https://codeforces.com/problemset/problem/1051/D 题意:一个2行n列的矩形,上面有黑白块,然后问你怎么布置才能有k个连通块,问有多少种方案数 思路 ...
- 20175120彭宇辰 《Java程序设计》第十一周学习总结
教材内容总结 第十三章 Java网络编程 一.URL类 一个URL对象包含的三个基本信息:协议.地址和资源. -协议:必须是URL对象所在的Java虚拟机支持的协议,常用的有:Http.Ftp.Fil ...
- ubuntu下node.js 环境搭建
由于使用gulp.js来对前端项目进行管理,所以搭建了node.js的环境 首先, 需要安装node, npm 去官网下载安装包,解压后放到你的安装的目录.在这里我的是/opt/node-v6.11. ...
- Chrome-逆向分析JS-1分析google网站翻译器原文存放位置
剧透:就是使用了一下 Chrome DevTools 的 Memory 功能,通过已知的 JS 变量的值查找 JS 内存中变量的引用 # 一:不分析一下现有的网页翻译方法么? 总所周知,(As is ...
- VMWARE ESXI 虚拟硬盘的格式:精简置备、厚置备延迟置零、厚置备置零
精简置备(thin): 精 简配置就是无论磁盘分配多大,实际占用存储大小是现在使用的大小,即用多少算多少.当客户机有输入输出的时候,VMkernel首先分配需要的空间并进行 清零操作,也就是说如果使用 ...
- <读书笔记>《Web前端开发最佳实践》
P77 P89 CSS Reset P94 给CSS样式定义排序 排序工具:CSScomb P97 什么是CSS的权重?权重是指选择符的优先级 P100 工具:Sass Less P101 框架 ...