手机版

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

相关文章

  • 阿里云服务器ECS实例Linux操作系统须知

    阿里云服务器ECS实例Linux操作系统须知 不要修改Linux实例默认的/etc/issue文件内容。否则,根据实例创建的自定义镜像的系统发行版本无法被正确识别,使用该镜像创建的实例无法正常启动。 不要随意更改根目录所在分区下...

    2019-11-19 服务器教程
  • 阿里云服务器ECS实例Windows操作系统须知

    阿里云服务器ECS实例Windows操作系统须知 不要停止Windows系统自带的AliyunService服务或自带的shutdownmon.exe进程,停止后可能会影响控制台正常关机或者重启。 不要修改域控制器的hostname。 不建议从域控制器的虚拟...

    2019-11-19 服务器教程
  • 关于阿里云服务器ECS实例的操作须知

    为了保证阿里云服务器ECS实例的正常运行,在使用阿里云服务器ECS实例之前,请您务必认真阅读以下注意事项。操作须知 创建ECS实例后,您拥有实例的管理员权限,阿里云没有权限登录您的实例。 禁止使用ECS实例做流量穿透服务。...

    2019-11-19 服务器教程
  • 什么是可用区(Zone)?

    可用区(Zone)可用区是指在同一地域内,电力和网络互相独立的物理区域。同一可用区内实例之间的网络延时更小。在同一地域内可用区与可用区之间内网互通,可用区之间能做到故障隔离。是否将实例放在同一可用区内,主要取决于对...

    2019-11-18 服务器教程
  • 购买阿里云服务器在选择地域时需要考虑哪些因素?

    购买阿里云服务器在选择地域时,您需要考虑以下几个因素: 地理位置 请根据您以及您目标用户所在的地理位置选择地域。 中国大陆 一般情况下建议选择和您目标用户所在地域最为接近的数据中心,可以进一步提升用户访问速...

    2019-11-18 服务器教程
你可能感兴趣