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

  • 相关阅读:
    学习记录-1
    初识CSS3 3D效果,浅谈理解
    so easy,too happy
    软件工程作业----自我介绍
    从零玩转JavaWeb系列7web服务器-----表单的提交
    从零玩转JavaWeb系列7web服务器-----get与post的区别
    从零玩转JavaWeb系列7web服务器-----用户登录界面二维码的制作
    mina 粘包、多包和少包的解决方法
    《MFC游戏开发》笔记十 游戏中的碰撞检测进阶:地图类型&障碍物判定
    使用 mina 传输大字节数组
  • 原文地址:https://www.cnblogs.com/dianfu123/p/5600897.html
Copyright © 2020-2023  润新知