手机版

PDO 事务处理 - MySQL中文参考手册

2019-09-11 阅读 :

PDO 事务处理

PDO 事务对象方法

方法描述
beginTransaction()启动一个事务
commit()提交一个事务
rollBack()回滚一个事务
inTransaction()检测是否在一个事务内

注意:当需要使用事务的时候,数据库表引擎不能是 MyISAM ,必须要是 InnoDB。

<?phptry {    $host = 'mysql:host=localhost;dbname=test';    $pdo = new PDO($host, 'root', 'aaaaaa', [PDO::ATTR_AUTOCOMMIT => 0]);    // 建表 SQL    $sql = <<<EOF        CREATE TABLE IF NOT EXISTS user_account(            id INT UNSIGNED NOT NULL AUTO_INCREMENT,            username VARCHAR(20) NOT NULL UNIQUE,            money DECIMAL(8,2) NOT NULL,             PRIMARY KEY (id)        )ENGINE=InnoDB DEFAULT CHARSET UTF8 COMMENT "用户账户表";EOF;    $pdo->exec($sql); // 使用 PDO 对象的 exec()方法执行建表语句    /*$sql = 'INSERT INTO user_account (username, money) VALUES (:username, :money),(:username2, :money2)';    $statement = $pdo->prepare($sql); // 预处理 SQL    $statement->bindParam(':username', $username, PDO::PARAM_STR);    $statement->bindParam(':money', $money);    $statement->bindParam(':username2', $username2, PDO::PARAM_STR);    $statement->bindParam(':money2', $money2);    $username = 'luo';    $money = 3000.00;    $username2 = 'li';    $money2 = 3000.00;    $statement->execute(); // 执行预处理*/    // 开启事务    $pdo->beginTransaction();    $res = $pdo->exec('UPDATE user_account SET money = money - 2000 WHERE username = "li"');    if ($res == 0) {        throw new PDOException('li 转账失败');    }    $res2 = $pdo->exec('UPDATE user_account SET money = money + 2000 WHERE username = "luo"');    if ($res2 == 0) {        throw new PDOException('luo 接受转账失败');    }    $pdo->commit();} catch (PDOException $e) {    echo $e->getMessage();}


服务器软件 网络工具 网站工具 服务器教程 服务器知识 服务器技术 服务器之家 vps教程 vps是什么

本文标题:PDO 事务处理 - MySQL中文参考手册 - 服务器教程_服务器技术_服务器知识_vps教程
本文地址:https://www.helloaliyun.com/tutorial/527.html

相关文章

  • CentOS 7 常用命令(系统关机、重启以及登出)

    关机:(系统的关机、重启以及登出 ) # 关闭系统(1)[root@localhost ~]# shutdown -h now # 关闭系统(2)[root@localhost ~]# init 0 # 关闭系统(3)[root@localhost ~]# telinit 0 # 按预定时间关闭系统[root@localhost...

    2019-12-07 服务器教程
  • linux重启命令 reboot与shutdown -r now的区别与联系

    在linux命令中reboot是重新启动,shutdown -r now是立即停止然后重新启动,都说他们两个是一样的,其实是有一定的区别的。shutdown命令可以安全地关闭或重启Linux系统,它在系统关闭之前给系统上的所有登录用户提示一条警告...

    2019-12-07 服务器教程
  • CentOS 7 如何使用命令重启或关机

    安装GNOME的朋友们首先切换到字符界面。切换到字符界面的方法如下: 先登陆进入系统,进入图形化界面,然后按Ctrl+Alt+F6(笔记本的是Ctrl+Alt+shift+Fn),进入字符界面。关机命令:shutdown或poweroffshutdown:shutdown -h now...

    2019-12-07 服务器教程
  • CentOS 7 正确关机重启的命令方法

    linux主要用于服务器领域,而在服务器上执行一项服务是永无止境的,除非遇到特殊情况,否则不会关机。和Windows不同,在linux系统下,很多进程是在后台执行的。在屏幕背后,可能有很多人同时在工作。如果直接按下电源的按钮,其他...

    2019-12-07 服务器教程
  • CentOS下的yum upgrade和yum update区别,没事别乱用!

    说明:生产环境对软件版本和内核版本要求非常精确,别没事有事随便的进行yum update操作!!!!!!!!!yum update: 升级所有包同时也升级软件和系统内核yum upgrade:只升级所有包,不升级软件和系统内核...

    2019-12-07 服务器教程
你可能感兴趣