Thinkphp数据的修改及删除操作

一、数据修改操作

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);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function  Update()
     {
         //方法一:shuzu
         $model =D( "info" );
         $attr = array (
         "Code" => "p014" ,
         "Name" => "修改数据" ,
         "Sex" =>true,
         "Nation" => "n001" ,
         "Birthday" => "2000-1-1" ,
         );
         //调用save()方法来修改数据
         $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();

1
2
3
4
5
//方法二:AR
$model =D( "info" );
$model ->Name= "Update" ;
$model ->Nation= "n001" ;
$model ->where( "Code='p006'" )->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;

}

以上参数表述,如果在请求的时候没有按照规则传递参数,那么当前方法禁止访问。

(除非参数有默认值)

 

修改商品信息步骤:

  1. 在“修改”按钮处把被修改商品id信息通过get形式传递给upd操作
  2. 在upd方法里边制作形式参数$goods_id,接收服务器给传递的get变量goods_id
  3. 在修改表单里边制作隐藏域goods_id,避免tp框架禁止修改语句执行
  4. 在upd操作方法内部有两个逻辑:展现表单、收集表单

3.自动收集表单修改(必须要会的)

MainController.class.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//方法三:自动修改表单
         
    $model =D( "info" );
    if ( empty ( $_POST ))
    {
    $code = "p006" ;
     $attr = $model ->find( $code );
    $this ->assign( "shuju" , $attr );
    $this ->display();
     }
    else
   {
    $model ->create();
    $model ->save(); 
    }

 视图模板的显示页面,Veiw/Main/update.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<! 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 >
<!--自动收集表单数据入库操作 -->
<!--注意大小写和数据库中的列名一致 -->
< h2 >修改页面</ h2 >
< form  action="__ACTION__" method="post">
< input  type="hidden" name="Code" value="<{$shuju.code}>"/>
< 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 >

  

        ==>       

数据库中信息改变:

 

二、数据删除及执行原生sql语句

delete()  返回受影响的记录条数

$goods -> delete(30);   删除主键值等于30的记录信息

$goods -> delete(“10,12,13”);   删除主键值等于10 12 13的三条记录

$goods -> where(“goods_id>60”)->delete()   把符合条件的记录都给删除

1
2
3
4
5
6
7
8
9
10
11
//删除数据
     function  Delete ()
     {
         $model =D( "info" );
         $model -> delete (); //里面不加条件会删除所有数据
         
         //根据主键值删
         $model -> delete ( "p011" );
         //根据条件删除
          $model ->where( "nation='n001'" )-> 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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值