PHP简单的事务测试用例
May 26, 2016 am 08:18 AMshow engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ // schemal create table transaction_tbl ( name char(10) not null ) engine=innodb; */ class Transaction { // 判断插入查询是否成功 private $error = 0; // 连接资源 private $conn_id = null; public function __construct() { $this->connect(); } public function test() { echo "BEGIN TEST\n"; //开始事务 $this->beginTransaction(); // 插入测试数据 // name 的大小限制为10 $str1 = str_repeat("a", mt_rand(1, 13)); $str2 = str_repeat("b", mt_rand(1, 13)); $this->query("INSERT INTO `transaction_tbl` (`name`) VALUES ('$str1')"); $this->query("INSERT INTO `transaction_tbl` (`name`) VALUES ('$str2')"); //提交查询 if ($this->error == 0) { $this->commit(); } else { $this->rollback(); } echo "END TEST\n"; } private function query($sql) { echo $sql."\n"; (mysql_query($sql, $this->conn_id) == FALSE) && ++$this->error; } // 开始事务 private function beginTransaction() { mysql_query("BEGIN", $this->conn_id); } //回滚 private function rollback() { echo "ROLLBACK\n"; mysql_query("ROLLBACK", $this->conn_id); } //提交 private function commit() { echo "save done\n"; mysql_query("COMMIT", $this->conn_id); } // 连接数据库 private function connect() { $this->conn_id = @mysql_connect("127.0.0.1", "root", "") or die("can\'t connect: ". mysql_error()); mysql_select_db("test", $this->conn_id) or die("can\'t use test: ". mysql_error()); } // 关闭数据 private function close() { mysql_close($this->conn_id); } public function __destruct() { $this->close(); } } $trans = new Transaction(); $trans->test();
ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

人気の記事
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7281
9


Java チュートリアル
1622
14


CakePHP チュートリアル
1341
46


Laravel チュートリアル
1258
25


PHP チュートリアル
1205
29

