建站软件 优化软件 编程软件 网页辅助 站群程序 网站程序 图像处理 资源教程 字体下载 推荐软件


您的位置:首页 > MYSQL学习 > mysql之事务介绍

mysql之事务介绍

时间:2015-05-26 19:47:57  来源:免费模板网 作者:风雪 阅读次数 tags事务

MySQL事务

事务处理机制在程序开发过程中有着非常重要的作用,它可以使整个系统更加安全,例如在银行处理转账业务时,如果A账户中的金额刚被发出,而B账户还没来得及接收就发生停电,这会给银行和个人带来很大的经济损失。采用事务处理机制,一旦在转账过程中发生意外,则程序将回滚,不做任何处理。

实例265:使用事务处理技术实现关联表间信息的删除

实例说明

MySQL数据库中的表可以通过主键相互关联,例如学生成绩管理系统中,学生表和成绩表可以通过id实现关联,所以在删除某个学生信息时,只需删除这两个表中为该id的所有记录。但是,当对成绩表实现删除相关id工作后,还没来得及删除学生信息表中该学生的信息时就发生停电等意外,则再重新查找该学生的成绩时,是无法查找到该学生成绩的。

本实例将采用事务处理方式,对学生信息表和学生成绩表中的数据进行删除,运行本实例,学生信息及学生成绩信息分别如图9.18及图9.19所示。当删除图9.18中的学生信息后,查看学生成绩信息可以发现与该学生对应的成绩全部删除。

图9.19 查看学生信息
图9.18 查看学生成绩

技术要点

实现事务的处理可以通过PHP预定义类mysqli的以下方法实现。
autocommit(boolean):该方法用于限定查询结果是否自动提交,如果该方法的参数为true则自动提交,如果参数为false则关闭自动提交。MySQL数据库默认为自动提交。
rollback():利用mysqli类中的该方法可以实现事务的回滚。
commit():利用该方法可以实现提交所有查询。

实现过程

(1)建立数据库及数据表,并实现与数据库的连接。实现与数据库建立连接的代码如下:

<?php
include_once("conn.php");
$sql=$conn->query("select * from tb_stu"); 
$info=$sql->fetch_array(MYSQLI_ASSOC);
if($info==NULL)
{
echo "暂无学生信息!";
} 
else
{
do
{
?> 
<tr>
<td height="25" bgcolor="#FFFFFF"><div align="center">
<?php echo $info[sname];?></div></td>
<td height="25" bgcolor="#FFFFFF"><div align="center">
<?php echo $info[sno];?></div></td>
<td height="25" bgcolor="#FFFFFF"><div align="center">
<?php echo $info[sage];?></div></td>
<td height="25" bgcolor="#FFFFFF"><div align="center">
<?php echo $info[saddress];?></div></td>
<td height="25" bgcolor="#FFFFFF"><div align="center">
<?php echo $info[ssfzh];?></div></td>
<td bgcolor="#FFFFFF"><div align="center">
<a href="javascript:if(window.confirm('确定删除该学生信息么?')==true)
{window.location.href='delete.php?id=<?php echo $info[id];?>';}">删除</a></div></td>
</tr>
<?php
}
while($info=$sql->fetch_array(MYSQLI_ASSOC));
}
?>


(2)显示所有学生基本信息。代码如下: 
在实现该模块功能时,可以利用JavaScript实现该页与delete.php页面的信息传递。代码如下:

<a href="javascript:if(window.confirm('确定删除该学生信息么?')==true)
{window.location.href='delete.php?id=<?php echo $info[id];?>';}">删除</a>


window对象的confirm()方法用于弹出一个对话框,用于提示用户是否真正删除某学生的所有信息。
(3)利用事务处理机制对学生基本信息进行删除。代码如下:

<?php
$id=$_GET[id];
include_once("conn.php");
$conn->autocommit(false);
if(!$conn->query("delete from tb_sco where id='".$id."'"))
{
$conn->rollback();
}
if(!$conn->query("delete from tb_stu where id='".$id."'"))
{
$conn->rollback();
}
$conn->commit();
$conn->autocommit(true);
echo "<script>window.location.href='index.php';</script>";
?>

举一反三

根据本实例,读者可以:
实现学生信息的批量删除。
实现银行的转账处理。

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

实例说明

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

本文地址:https://www.freemoban.com/mysql/2015/0526/1948.html

猜你喜欢
栏目推荐
模板推荐

Copyright:www.freemoban.com 免费模板网 All Rights Reserved 网站备案:辽ICP备19014872号-2   辽公网安备 21010602000376号  辽公网安备:42900402000182号

免责声明:本站部分资源来自互联网收集,版权归原创者所有,如果侵犯了你的权益,我们会及时删除侵权内容,联系QQ:1615187561 谢谢合作!