您所在的位置: 首页>>读书频道>>设计开发>>网站开发>>

9.5 MySQL事务 实例266

http://book.51cto.com  2007-10-11 09:36  明日科技  人民邮电出版社  我要评论(0)

实例262:使用事务处理技术实现银行的安全转账

这是一个事务处理的实例
录像位置:光盘\mingrisoft\09\266

实例说明

在实现银行转账过程中,发生意外是在所难免的,为了避免因意外而造成不必要的损失,在银行转账时经常使用事务处理方式。运行本实例,如图9.20所示,在图中的文本框中输入要转给B账户的金额后,单击“转账”按钮即可实现转账。

图9.20  银行转账

技术要点

本实例的关键技术是如何应用PHP的事务处理机制处理转账过程中可能遇到的意外。事务处理方式是个不错的选择。本实例应用事务处理技术实现转账的代码如下:

$tob=$_POST[tob];
include_once("conn.php");
$conn->autocommit(false);
if(!$conn->query("update tb_zy set money=money-'".$tob."' where flag='mrsoft'"))
{
$conn->rollback();
}
if(!$conn->query("update tb_zy set money=money+'".$tob."' where flag='mr'"))
{
$conn->rollback();
}
$conn->commit();
$conn->autocommit(true);
echo "<SCRIPT>window.location.href='index.php';</SCRIPT>";
?>

首先调用mysqli类的autocommit()方法关闭数据库的自动提交,然后减少A账户一定数量的金额,并判断查询是否顺利执行,如果在此过程中发生意外,则通过调用mysqli类的rollback()方法回滚,不做任何处理,反之为B账户增加相同的金额。最后通过调用mysqli类的commit()方法提交查询,实现转账。

实现过程

(1)利用mysqli扩展技术实现与MySQL数据库的连接。代码如下:

$conn=new mysqli("localhost","root","root","db_database09");
$conn->query("set names gb2312");
?>
(2)查询A账户与B账户的现有金额并在页面中显示。代码如下:
include_once("conn.php");
$sql=$conn->query("select * from tb_zy where flag='mrsoft'");
$info=$sql->fetch_array(MYSQLI_ASSOC);
$sql1=$conn->query("select * from tb_zy where flag='mr'");
$info1=$sql1->fetch_array(MYSQLI_ASSOC);
?>
举一反三

根据本实例,读者可以:
实现多用户同时转账。
实现自动转账。

【责任编辑:雪花 TEL:(010)68476606】

回书目   上一节   下一节
Sun以10亿美元并购开源数据库厂商MySQL
Oracle数据库开发之PL/SQL基础应用
Oracle数据库开发基础教程
2006年数据库频道热点关注
数据库安全技术专题
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有