php利用事務處理轉賬問題

2022-10-04 06:24:08 字數 1574 閱讀 2374

<?php header("content-type:text/html; charset=utf-8");

$mysqli = new mysqli("localhost", "root", "064319", "php");

$mysqli->set_charset("utf8");

if($mysqli->connect_errno)

$mysqli->autocommit(false); //自動提交模式設為false

$flag = true; //事務是否成功執行的標誌

$query = "update account set balance=balance-1000 where id=3";

$result = $mysqli->query($query);

$affected_count = $mysqli->affected_rows;

if(!result || $affected_count == 0)

$query = "update account set balance=balance+1000 where id=2";

$result = $mysqli->query($query);

$affected_count = $mysqli->affected_rows;

if(!$result || $affected_count == 0)

if($flag) else

$mysqli->autocommit(true); //重新設定事務為自動提交

$mysqli->close();

?>

**二:

<?php trycatch(pdoexception $e)

try where k_name='user1'");

$affected_rows2=$pdo->exec("update kfry set k_age=k_age- where k_name='user2'");//隨意更改使之執行成功或失敗

/* if($affected_rows1&&$affected_rows2)

else */

if(!$affected_rows1)

throw new pdoexception("加入錯誤");

if(!$affected_rows2)

throw new pdoexception("減少錯誤");

echo "操作成功";

$pdo->commit();//如果執行程式設計客棧到此處前面兩個更新sql語句執行成功,整個事務執行成功

}catch(pdoexception $e)

$pdo->setattribute(pdo::attr_autocommit,1);

//測試是否成功

echo "\n操作結果為:\n";

$sql="select * from kfry";

$result=$pdo->query($sql);

foreach($result as $v)

?>

本文標題: php利用事務處理轉賬問題

本文位址:

PHP 事務處理

在對資料庫會進行多次操作的時候會使用到事務 transaction 其中的底層邏輯如下 1 開啟事務 begin 2 取消資料庫自動寫入 set autocommit 0 3 sql1賦值 第一句所要執行的內容 4 sql2賦值 等等 5 執行mysql query sql1 sqln 6 判斷sq...

事務處理 回滾(轉賬操作)

jdbc事務處理 四大原則 原子性一致性 隔離性永續性 第一步 實現轉賬操作 假設在賬戶中,蓋倫有餘額5000元,趙信有餘額2000元,蓋倫要向趙信轉賬1000元。public static void outmoney connection conn,string name,int account ...

ASP中使用事務處理

asp中使用事務處理asp中隊資料庫表的操作 insert update delete 可使用事務處理,並支援多事務處理.在asp的資料庫物件鏈結物件中,提供了一下屬性 begintrans 事務開始 committrans 事務提交 rollbacktrans 事務回滾 on error resu...