科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道用新的PHP插件实现MySQL为基础的事务

用新的PHP插件实现MySQL为基础的事务

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

事务处理支持很长时间以来一直是大多数MySQL开发者的心愿,这篇简短的教程将向你说明怎样利用这些新的MySQLi函数,用PHP实现以MySQL为基础的事务。

来源:中国IT实验室 2008年5月19日

关键字: 数据库 技巧 MySQL

  • 评论
  • 分享微博
  • 分享邮件

    工作实例

  要了解这个在实践中是怎么工作的,让我们回到前面讨论过的银行转帐的例子.我们假设你的任务是建立一个简单的Web应用程序,让用户在他们的银行帐户间转帐。我们再进一步假设一个单独用户的帐户存储在一个MySQL数据库中,如下所示:

  mysql> SELECT * FROM accounts;

  +----+------------+---------+

  | id | label | balance |

  +----+------------+---------+

  | 1 | Savings #1 | 1000 |

  | 2 | Current #1 | 2000 |

  | 3 | Current #2 | 3000 |

  +----+------------+---------+

  3 rows in set (0.34 sec)

  现在,需要建立一个简单的界面,使用户能够输入一个现金数额,实现从一个帐户到另一个的转帐。实际的“交易”将用两个UPDATE语句来执行,一个将转帐金额从源帐户取出,即借方,另一个将转帐金额记入目标帐户,即贷方。假设我们所做的是在帐户之间进行转帐,那么所有帐户的可用结余总额 ($6000)应该一直保持不变。

  列表B显示了可能的代码:

  列表 B

  // connect to database
  $dbh = mysqli_connect("localhost", "user", "pass", "test") or die("Cannot connect");
  // turn off auto-commit
  mysqli_autocommit($dbh, FALSE);
  // look for a transfer
  if ($_POST['submit'] && is_numeric($_POST['amt'])) {
  // add $$ to target account
  $result = mysqli_query($dbh, "UPDATE accounts SET balance = balance + " . $_POST['amt'] . " WHERE id = " . $_POST['to']);
  if ($result !== TRUE) {
  mysqli_rollback($dbh); // if error, roll back transaction
  }
  // subtract $$ from source account
  $result = mysqli_query($dbh, "UPDATE accounts SET balance = balance - " . $_POST['amt'] . " WHERE id = " . $_POST['from']);
  if ($result !== TRUE) {
  mysqli_rollback($dbh); // if error, roll back transaction
  }
  // assuming no errors, commit transaction
  mysqli_commit($dbh);
  }
  // get account balances
  // save in array, use to generate form
  $result = mysqli_query($dbh, "SELECT * FROM accounts");
  while ($row = mysqli_fetch_assoc($result)) {
  $accounts[] = $row;
  }
  // close connection
  mysqli_close($dbh);
  ?>

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章