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 ...
随机推荐
- 每天一个Linux命令:whereis(18)
whereis whereis命令用来定位指令的二进制程序.源代码文件和man手册页等相关文件的路径. whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b).man说明文件(参数- ...
- 别人的双11 & 程序员的双11~
双11,致敬所有的程序员欧巴! 愿代码的世界,只有爱,没有伤害!! 点此参加阿里云双十一拼团活动:https://m.aliyun.com/act/team1111/ 阅读原文
- Android逆向之旅---Android应用的汉化功能(修改SO中的字符串内容)
一.前言 今天我们继续来讲述逆向的知识,今天我们来讲什么呢?我们在前一篇文章中介绍了关于SO文件的格式,今天我们继续这个话题来看看如何修改SO文件中的内容,看一下我们研究的主题: 需求:想汉化一个Ap ...
- Windows Server服务器之Linux server与windows server的区别
Linux server与windows server的区别用linux做server,相对于windows server有什么优势? 首先,平均故障时间少,只要配置和使用得当,linux的平均故障( ...
- python函数的参数-可变参数,关键字参数
# -*- coding: utf-8 -*- #coding=utf-8 ''' @author: tomcat @license: (C) Copyright 2017-2019, Persona ...
- bzoj 2242: [SDOI2011]计算器 & BSGS算法笔记
这题的主要难点在于第三问该如何解决 于是就要知道BSGS是怎样的一种方法了 首先BSGS是meet in the middle的一种(戳下面看) http://m.blog.csdn.net/blog ...
- C#关于日期 月 天数 和一年有多少周及根据某年某周获取时间段的计算(转)
/// 当前月有多少天 /// </summary> /// <param name="y"></param> /// <param na ...
- 把 MongoDB 当成是纯内存数据库来使用(Redis 风格)
基本思想 将MongoDB用作内存数据库(in-memory database),也即,根本就不让MongoDB把数据保存到磁盘中的这种用法,引起了越来越多的人的兴趣.这种用法对于以下应用场合来讲,超 ...
- 通过TCP/IP连接Mysql数据库
问题:mysql只能用localhost或127.0.0.1连接 解决:mysql安装完后,默认是root用户,root用户只能在服务器登录,需要分配新用户. 1.以root用户登陆mysql数据库. ...
- 自动化测试常用断言的使用方法(python)-(转载@zhuquan0814
自动化测试中寻找元素并进行操作,如果在元素好找的情况下,相信大家都可以较熟练地编写用例脚本了,但光进行操作可能还不够,有时候也需要对预期结果进行判断. 这里介绍几个常用断言的使用方法,可以一定程度上帮 ...