zoukankan      html  css  js  c++  java
  • ThinkPHP 更新数据 save方法

    ThinkPHP save() 方法

    ThinkPHP 中使用 save() 方法来更新数据库,并且也支持连贯操作的使用。

    例子:

    public function update(){
        header("Content-Type:text/html; charset=utf-8");
        $Dao = M("User");
    
        // 需要更新的数据
        $data['email'] = 'Jack@163.com';
        // 更新的条件
        $condition['username'] = 'Jack';
        $result = $Dao->where($condition)->save($data);
        //或者:$resul t= $Dao->where($condition)->data($data)->save();
    
        if($result !== false){
            echo '数据更新成功!';
        }else{
            echo '数据更新失败!';
        }
    }

    上面例子执行的 SQL 语句为:

    UPDATE user SET email='Jack@163.com' WHERE username='Jack'

    提示

    为了保证数据库的安全,避免出错更新整个数据表,如果没有任何更新条件,数据对象本身也不包含主键字段的话,save方法不会更新任何数据库的记录。

    因此要使用 save() 方法更新数据,必须指定更新条件或者更新的数据中包含主键字段

    使用主键的例子:

    public function update(){
        header("Content-Type:text/html; charset=utf-8");
        $Dao = M("User");
    
        // 需要更新的数据
        $data['email'] = 'Jack@163.com';
        $data['uid'] = 2;
        $result = $Dao->save($data);
    
        if($result !== false){
            echo '数据更新成功!';
        }else{
            echo '数据更新失败!';
        }
    }

    如果需要更新的数据里面包含主键,那么 ThinkPHP 会自动把主键的值作为条件来更新。上面的例子跟下面的效果相同:

      // 需要更新的数据
        $data['email'] = 'Jack@163.com';
        // 更新的条件
        $condition['uid'] = 2;
        $result = $Dao->where($condition)->save($data);

    如果是表单数据,还可以使用 create() 方法创建数据对象来更新数据:

    public function update(){
        header("Content-Type:text/html; charset=utf-8");
        $Dao = D("User");
    
        if($vo = $Dao->create()) {
            $result = $Dao->save();
            if($result !== false){
                echo '数据更新成功!';
            }else{
                echo '数据更新失败!';
            }
        }else{
            $this->error($Form->getError());
        }
    }

    如果更新的数据需要做逻辑处理,可以在操作类以对象的方式处理或者在模型内处理,具体可参考《ThinkPHP 表单数据智能写入 create 方法》。

    注意:以create() 方法创建数据对象来更新数据,表单中必须包含一个以主键为名称的隐藏域,才能完成保存操作。

    数据没变,提交更新,返回false;
    数据变,提交更新,返回true;

    返回的不是false 而是0 你要用恒等判断 是否提交失败

    原文链接

  • 相关阅读:
    Hibernate缓存之初探
    Oracle、MySql、SQLServer 数据分页查询
    LISTAGG WITHIN GROUP函数使用方法
    exp/imp密码特殊字符处理
    Oracle动态授权用户权限
    Centos7二进制安装Mysql8.0.14
    Zabbix监控Windows网卡流量
    Zabbix监控通过jvm插件监控Tomcat
    Linux安装RabbitMQ3.73开启插件shovel并做配置
    yum安装指定路径和配置文件出错
  • 原文地址:https://www.cnblogs.com/wicub/p/4472323.html
Copyright © 2011-2022 走看看