logo

ThinkPHP 更新数据2012-05-16

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);
    //或者:$result= $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
  • 更新

扫描二维码分享话题