6月17 ThinkPHP连接数据库------数据的修改及删除

Posted Durriya

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

}

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

(除非参数有默认值)

 

修改商品信息步骤:

  1. 在“修改”按钮处把被修改商品id信息通过get形式传递给upd操作
  2. 在upd方法里边制作形式参数$goods_id,接收服务器给传递的get变量goods_id
  3. 在修改表单里边制作隐藏域goods_id,避免tp框架禁止修改语句执行
  4. 在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语句

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

 

以上是关于6月17 ThinkPHP连接数据库------数据的修改及删除的主要内容,如果未能解决你的问题,请参考以下文章

6月16 ThinkPHP连接数据库及Model数据模型层--------查询及数据添加

6月17 表单验证

thinkphp5 结合 阿里oss进行多图上传(18年6月28日开发完成)

6月19 使用tp框架生成验证码及文件上传

使用ThinkPHP5连接数据库

java或spring实现定时任务。时间从数据库取得。