在PDO中使用事务

一般还是ORM的事务方便一些,下面是PHP原生PDO MySQL的事务。

function getPDO(){
    $dsn        = 'mysql:dbname='.config('database')['database'].';host='.config('database')['hostname'];
    $username   = config('database')['username'];
    $password   = config('database')['password'];

    try {
        $dbh = new PDO($dsn, $username, $password);
    } catch (PDOException $e) {
        // echo 'Connection failed: ' . $e->getMessage();
        return false;
    }
    return $dbh;
}


$dbh = getPDO();
try{
    $dbh->beginTransaction();

    $sth = $dbh->prepare("UPDATE tp_user SET balance = :balance WHERE id=:userid");
    $sth->execute(['balance'=>$balance, 'userid'=>$user['id']]);
    $sth = $dbh->prepare("UPDATE tp_user_charge SET status=1 WHERE id=:id");
    $sth->execute(['id'=>$id]);
    
    $dbh->commit();
    return $this->success("充值成功");
} catch(Exception $e) {
    $dbh->rollBack();
    return $this->error("充值失败:".$e->getMessage());
}

 

 

随机推荐
composer 把默认镜像修改成阿里云镜像
Windows搭建基于nginx rtmp的视频点播服务器
Webpack file-loader 升级后 src= "[object Module]" 的解决方法
使用Cordova命令行界面(CLI)
Javascript中键盘事件
为什么日本动漫中会出现大眼睛,多发色,多瞳色
Nodejs进阶:MD5入门介绍及crypto模块的应用
Apache开启SSL,并代理Node.js的配置文件和80端口的跳转
PHP开发api接口安全验证
Photoshop 线稿上色技巧笔记