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

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'] = '[email protected]';
  // 更新的条件
  $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='[email protected]' WHERE username='Jack'

提示

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

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

使用主键的例子:

public function update(){
  header("Content-Type:text/html; charset=utf-8");
  $Dao = M("User");

  // 需要更新的数据
  $data['email'] = '[email protected]';
  $data['uid'] = 2;
  $result = $Dao->save($data);

  if($result !== false){
    echo '数据更新成功!';
  }else{
    echo '数据更新失败!';
  }
}

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

  // 需要更新的数据
  $data['email'] = '[email protected]';
  // 更新的条件
  $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() 方法创建数据对象来更新数据,表单中必须包含一个以主键为名称的隐藏域,才能完成保存操作。

本文属原创,转载请注明原文:http://www.zhimatong.com/jiaocheng/557.html

为保证教程的实用性及扩大知识面覆盖,如果您有相似问题而未解决,可联系在线客服免费技术支持。

内容有用

相关阅读
关键词:

    联系
    顾问

    在线
    客服
    购物车
    账号登录

    没有账号?立即注册

    忘记密码

    登录即同意用户协议没有账号? 立即注册
    账号注册
    我已阅读并同意用户协议
    立即注册
    注册即同意用户协议已有账号? 立即登录
    找回密码

    操作步骤:邮箱验证->设置新密码

    注册即同意用户协议已有账号? 立即登录