6月17 ThinkPHP连接数据库------数据的修改及删除
1.数据修改操作
save() 实现数据修改,返回受影响的记录条数
具体有两种方式实现数据修改,与添加类似(数组、AR方式)
1.数组方式
a) $goods = D(“Goods”);
b) $ar = array(‘goods_id’=>100,‘goods_name’=>’lenovo手机’,’goods_price’=>1200);
c) $goods ->where(‘goods_id>50’)-> save($ar);
Home\MainController.class.php中的update方法
public function Update()
{
$model = D("Info");
//1.数组方式
/* $attr = array(
"Code"=>"z001",//主键值不能改
"Name"=>"修改qq",
"Sex"=>false,
"Nation"=>"n004",
"Birthday"=>"1999-3-15", );
//调用save方法修改数据
//$model->save($attr); //赋值方法添加
$attr["Code"]="a002";
$attr["Name"]="是不是";
$attr["Sex"]=false;
$attr["Nation"]="n002";
$attr["Birthday"]="2003-4-2";
$model->save($attr);//添加数据的方法需要参数(该参数是一个关联数组)
}
2. 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();
//2 AR方式
$model->Name = "WWW";
$model->Nation = "n004"; $model->where("Code='z004'")->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操作方法内部有两个逻辑:展现表单、收集表单
3.自动收集表单修改(必须要会的)
public function Update()
{
//修改页面
$model = D("Info");
if(empty($_POST))
{
$code = "z001";
$attr = $model->find($code); $this->assign("shuju",$attr);
$this->display();
}
else
{
$model->create();
$model->save();
}
}
视图模板的显示页面,update.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head> <body>
<h1>修改页面</h1>
<form action="__ACTION__" method="post">
<div><input type="hidden" name="Code" value="<{$shuju.code}>" /></div>
<div>姓名:<input type="text" name="Name" value="<{$shuju.name}>" /></div>
<div>性别:<input type="text" name="Sex" value="<{$shuju.sex}>" /></div>
<div>民族:<input type="text" name="Nation" value="<{$shuju.nation}>" /></div>
<div>生日:<input type="text" name="Birthday" value="<{$shuju.birthday}>" /></div> <input type="submit" value="提交" />
</form>
</body>
</html>
2.数据删除及执行原生sql语句
delete()返回受影响的记录条数
$goods -> delete(30); 删除主键值等于30的记录信息
$goods -> delete(“10,12,13”); 删除主键值等于10 12 13的三条记录
$goods -> where(“goods_id>60”)->delete() 把符合条件的记录都给删除
//删除数据
public function Delete()
{
//删除数据
$model = D("Info"); //根据主键值删除
//$model->delete("a002"); //根据条件删除
$model->where("Nation='n005'")->delete();
}
2.2执行原生sql语句
- 查询语句query() 返回一个二维数组信息
- 添加、修改、删除 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);
6月17 ThinkPHP连接数据库------数据的修改及删除的更多相关文章
- Thinkphp 数据的修改及删除操作
一.数据修改操作 save() 实现数据修改,返回受影响的记录条数 具体有两种方式实现数据修改,与添加类似(数组.AR方式) 1.数组方式: a) $goods = D(“Goods ...
- 6月16 ThinkPHP连接数据库及Model数据模型层--------查询及数据添加
连接数据库配置及Model数据模型层 convertion.php config.php 1.在config.php做数据库连接配置 2.修改配置 /* 数据库设置 */ 'DB_TYPE' => ...
- [Oracle]Oracle数据库数据被修改或者删除恢复数据
1.SELECT * FROM CT_FIN_RiskItem--先查询表,确定数据的确不对(cfstatus第一行缺少)2.select * from CT_FIN_RiskItem as of t ...
- ORACLE数据库数据被修改或者删除恢复数据(闪回)
1. SELECT * FROM CT_FIN_RiskItem --先查询表,确定数据的确不对 (cfstatus 第一行缺少) 2. select * from CT_FIN_RiskItem ...
- ClientDataSet中修改,删除,添加数据和Delta属性
ClientDataSet中使用Post提交变更的数据时,实际上并没有更新到后端数据库中,而是提交到了由DataSnap管理的数据缓冲区中.当使用了ClientDataSet.ApplyUpDates ...
- 数据库的修改和删除;比较标签代替<,>,=号;模板替换;session的用法
注: 1.session:系统默认开启;用途:防止跳过登录(只能访问登录方法);session和cookie的用法(手册->专题); 赋值:session('name','value'); 取值 ...
- 6月17 练习ThinkPHP的增删改查
利用ThinkPHP连接数据库的增删改查的例题:用到的数据库表名Info表,Nation表 数据显示页面:MainController.class.php中的ShowInfo方法 //例题 //显示所 ...
- Oracle.数据的增删改、表操作(创建,修改,删除)、数据类型
SELECT ename,dname FROM emp,dept WHERE emp.deptno=dept.deptno; SELECT dname,loc FROM dept; SELECT JO ...
- 4月17日 (PS:由于时间问题,现在才发,望老师见谅)疯狂猜成语-----第三次站立会议 参会人员:杨霏,袁雪,胡潇丹,郭林林,尹亚男,赵静娜
疯狂猜成语-----第三次站立会议 参会人员:杨霏,袁雪,胡潇丹,郭林林,尹亚男,赵静娜 会议内容: 组员依次汇报自己的工作进度,并且提出自己在进行任务的过程中遇到的问题,是否解决以及解决办法. 以下 ...
随机推荐
- 在同一台电脑部署多个Tomcat服务
背景:公司的项目使用的是jdk1.6,Tomcat7.0,比较旧,打算建一些测试项目用jdk1.8,Tomcat9.0. 参考了网上几篇文章 http://dong-shuai22-126-com.i ...
- P2522 [HAOI2011]Problem b
还有三倍经验的吗(窒息) 思路 其实就是P3455套了个简单的容斥 把问题转化成f(n,m,k)-f(a-1,m,k)-f(n,b-1,k)+f(a-1,b-1,k)就可以了 和p3455几乎一样的代 ...
- Deep Learning framework --- MexNet 安装,测试,以及相关问题总结
Deep Learning framework --- MexNet 安装,测试,以及相关问题总结 一.安装: 参考博文:http://www.open-open.com/lib/view/op ...
- 【JS】js操作json object
//将表单序列化成字符串 $.fn.serializeObject = function () { var obj = {}; var count = 0; $.each(this.serialize ...
- HDU 2612 Find a way(找条路)
HDU 2612 Find a way(找条路) 00 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem ...
- 51nod 1055 最长等差数列
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1055 题意: 思路:先固定一个位置,然后从该中心点出发向两边扫,确实很难 ...
- maven . mac
编辑文件 .bash_profile 1.vim .bash_profile 输入: M2_HOME=/Users/lizhimin/Documents/maven/apache-maven-3.3. ...
- CART决策树
CART(Classification and Regression tree)分类回归树由L.Breiman,J.Friedman,R.Olshen和C.Stone于1984年提出.ID3中根据属 ...
- jquery事件重复绑定的几种解决方法 (二)
防止事件重复绑定共有4种方法: bind().unbind()方法 live().die()方法 off().on()方法 one()方法 一.bind().unbind()方法 bind();绑定事 ...
- 使用R语言的RTCGA包获取TCGA数据--转载
转载生信技能树 https://mp.weixin.qq.com/s/JB_329LCWqo5dY6MLawfEA TCGA数据源 - R包RTCGA的简单介绍 - 首先安装及加载包 - 指定任意基因 ...