本文實(shí)例講述了php+Mysqli利用事務(wù)處理轉(zhuǎn)賬問(wèn)題的方法。分享給大家供大家參考
?php header( Content-type:text/html; charset=utf-8 $mysqli = new mysqli( localhost , root , 064319 , php $mysqli- set_charset( utf8 if($mysqli- connect_errno) { die( 數(shù)據(jù)庫(kù)連接失敗 .$mysqli- connect_error); $mysqli- autocommit(false); //自動(dòng)提交模式設(shè)為false $flag = true; //事務(wù)是否成功執(zhí)行的標(biāo)志 $query = update account set balance=balance-1000 where id=3 $result = $mysqli- query($query); $affected_count = $mysqli- affected_rows; if(!result || $affected_count == 0) { //失敗 $flag = false; $query = update account set balance=balance+1000 where id=2 $result = $mysqli- query($query); $affected_count = $mysqli- affected_rows; if(!$result || $affected_count == 0) { $flag = false; if($flag) { $mysqli- commit(); echo 轉(zhuǎn)賬成功 } else { $mysqli- rollback(); echo 轉(zhuǎn)賬失敗 $mysqli- autocommit(true); //重新設(shè)置事務(wù)為自動(dòng)提交 $mysqli- close(); ?
代碼二:
?php try{ $pdo=new PDO( mysql:host=localhost;dbname=psp , root , $pdo- exec( set names utf8 $pdo- setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);//設(shè)置異常處理模式 $pdo- setAttribute(PDO::ATTR_AUTOCOMMIT,0);//關(guān)閉自動(dòng)提交 }catch(PDOException $e){ echo 數(shù)據(jù)庫(kù)連接失敗 exit; try{ $age=10; $pdo- beginTransaction();//開始事務(wù) $affected_rows1=$pdo- exec( update kfry set k_age=k_age+{$age} where k_name= user1 $affected_rows2=$pdo- exec( update kfry set k_age=k_age-{$age} where k_name= user2 //隨意更改使之執(zhí)行成功或失敗 /* if($affected_rows1 $affected_rows2) $pdo- commit(); echo 操作成功 }else{ $pdo- rollback(); } */ if(!$affected_rows1) throw new PDOException( 加入錯(cuò)誤 if(!$affected_rows2) throw new PDOException( 減少錯(cuò)誤 echo 操作成功 $pdo- commit();//如果執(zhí)行到此處前面兩個(gè)更新sql語(yǔ)句執(zhí)行成功,整個(gè)事務(wù)執(zhí)行成功 }catch(PDOException $e){ echo 操作失?。?.$e- getMessage(); $pdo- rollback();//執(zhí)行事務(wù)中的語(yǔ)句出了問(wèn)題,整個(gè)事務(wù)全部撤銷 $pdo- setAttribute(PDO::ATTR_AUTOCOMMIT,1); //測(cè)試是否成功 echo /n操作結(jié)果為:/n $sql= select * from kfry $result=$pdo- query($sql); foreach($result as $v) echo $v[ k_name ]. .$v[ k_age ]. /n ?
總結(jié):以上就是本篇文的全部?jī)?nèi)容,希望能對(duì)大家的學(xué)習(xí)有所幫助。
相關(guān)推薦:
PHP中static關(guān)鍵字的定義、遲綁定以及與self關(guān)鍵字的區(qū)別
php大規(guī)模數(shù)據(jù)提交的方法
php針對(duì)文件夾操作的方法
以上就是php處理事務(wù)的提交與回滾的詳細(xì)內(nèi)容,PHP教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答
圖片精選