PHP 对 mysql 的事务处理

原创
2012/10/31 15:53
阅读数 732
mysql>mysql事务处理php代码实现事务的处理可以通过PHP预定义类mysqli的以下方法实现。
autocommit(boolean):该方法用于限定查询结果是否自动提交,如果该方法的参数为true则自动提交,如果参数为false则关闭自动提交。MySQL数据库默认为自动提交。
rollback():利用mysqli类中的该方法可以实现事务的回滚。

commit():利用该方法可以实现提交所有查询。


<?php
include_once("conn.php");

$id=$_GET[id];
$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 "ok"

?>

列二

<?php

require('connectDB.php'); //建立数据库连接
mssql_query("BEGIN TRANSACTION DEPS02_DEL"); //开始事务
$delete_dep_sql="DELETE FROM TBLDEPARTMENT WHERE DEPTID='{$_GET[deptid]}'";
// echo $delete_dep_sql."<br>";
mssql_query($delete_dep_sql); //操作数据库
// var_dump($del_result);
$delete_result = mssql_query("select @@ROWCOUNT as id");
$delete_info = mssql_fetch_array($delete_result);
$delete_rows = $delete_info[0];
// var_dump($delete_rows);
mssql_free_result($delete_result);
echo "<script language=javascript>";
if(true){ //判断是否回滚提交
mssql_query("COMMIT TRANSACTION DEPS02_DEL"); //提交事务
echo "alert('delete success!');";
}else{
mssql_query("ROLLBACK TRANSACTION DEPS02_DEL"); //回滚事务
echo "alert('delete faile!');";
}
echo "</script>";mssql_close();

?>


php+mssql 的事务处理主要是以mssql的语言实现,php只是给其提供个与数据库对话的空间,如果以{BEGIN TRANSACTION }开始,后续的mssql就在该事务期间里,等待提交或回滚得指令;如果不在事务期间内就每个语句直接操作数据库。


   原文复制与  http://hi.baidu.com/mevyen/item/51f413945d2295d81a49dfac
展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部