1. <rp id="zghru"></rp>
    1. ThinkPHP 更新数据 save方法

      ThinkPHP 内置的 save 方法用于向数据表更新数据,相当于 SQL 中的 UPDATE 行为。

      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() 方法创建数据对象来更新数据,表单中必须包含一个以主键为名称的隐藏域,才能完成保存操作。

      参考阅读

      1. ThinkPHP 模型
      2. ThinkPHP Where 条件
      3. ThinkPHP 连贯操作
        ThinkPHP 更新数据 save方法
        ThinkPHP setField 方法更新个别字段的值
        ThinkPHP统计数据更新 setInc与setDec方法

      zgguan.com(it学习网) — 提供最好的 XHTML教程DIV+CSS教程JavaScript教程PHP教程ThinkPHP教程

      一分时时彩