php下pdo的mysql事務(wù)處理用法實(shí)例
本文實(shí)例講述了php下pdo的mysql事務(wù)處理用法。分享給大家供大家參考。具體分析如下:
php+mysql事務(wù)處理的幾個(gè)步驟:
1.關(guān)閉自動(dòng)提交 2.開(kāi)啟事務(wù)處理 3.有異常就自動(dòng)拋出異常提示再回滾 4.開(kāi)啟自動(dòng)提交
注意:mysql只有這個(gè)InnoDB驅(qū)動(dòng)是支持事務(wù)處理的,默認(rèn)MyIsAM驅(qū)動(dòng)不支持,下面是實(shí)例代碼:
try{
$pdo=new pdo("mysql:host=localhost;dbname=mydb", "root", "root", array(PDO::ATTR_AUTOCOMMIT=>0));//最后是關(guān)閉自動(dòng)提交
//$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 0);//這個(gè)是通過(guò)設(shè)置屬性方法進(jìn)行關(guān)閉自動(dòng)提交和上面的功能一樣
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//開(kāi)啟異常處理
}catch(PDOException $e){
echo "數(shù)據(jù)庫(kù)連接失?。?.$e->getMessage();
exit;
}
/*
* 事務(wù)處理
*
* 張三從李四那里買(mǎi)了一臺(tái) 2000 元的電腦
* 從張三帳號(hào)中扣出 2000元
* 向李四賬號(hào)中加入 2000元
* 從商品表中減少一臺(tái)電腦
* MyIsAM InnoDB
*/
try{
$pdo->beginTransaction();//開(kāi)啟事務(wù)處理
$price=500;
$sql="update zhanghao set price=price-{$price} where id=1";
$affected_rows=$pdo->exec($sql);
if(!$affected_rows)
throw new PDOException("張三轉(zhuǎn)出失敗");//那個(gè)錯(cuò)誤拋出異常
$sql="update zhanghao set price=price+{$price} where id=3";
$affected_rows=$pdo->exec($sql);
if(!$affected_rows)
throw new PDOException("向李四轉(zhuǎn)入失敗");
echo "交易成功!";
$pdo->commit();//交易成功就提交
}catch(PDOException $e){
echo $e->getMessage();
$pdo->rollback();
}
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);//自動(dòng)提交,如果最后不自動(dòng)提交,轉(zhuǎn)賬是不成功的
//設(shè)置錯(cuò)誤報(bào)告模式 ERRMODE_SILENT ERRMODE_WARNING
?>
希望本文所述對(duì)大家的php程序設(shè)計(jì)有所幫助。
相關(guān)文章
PHP中防止SQL注入攻擊和XSS攻擊的兩個(gè)簡(jiǎn)單方法
所有有打印的語(yǔ)句如echo,print等 在打印前都要使用htmlentities() 進(jìn)行過(guò)濾,這樣可以防止Xss,注意中文要寫(xiě)出htmlentities2010-04-04PHP動(dòng)態(tài)分頁(yè)函數(shù),PHP開(kāi)發(fā)分頁(yè)必備啦
PHP動(dòng)態(tài)分頁(yè)函數(shù),PHP開(kāi)發(fā)分頁(yè)必備啦。其實(shí)吧,這個(gè)是必用的,不說(shuō)了,PHP動(dòng)態(tài)分頁(yè)函數(shù)還是不錯(cuò),比較簡(jiǎn)單吧2011-11-11php將textarea數(shù)據(jù)提交到mysql出現(xiàn)很多空格的解決方法
這篇文章主要介紹了php將textarea數(shù)據(jù)提交到mysql出現(xiàn)很多空格的解決方法,分析了空格出現(xiàn)的原因以及刪除空格的簡(jiǎn)單實(shí)現(xiàn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-12-12PHP開(kāi)發(fā)工具ZendStudio下Xdebug工具使用說(shuō)明詳解
我使用的是XAMPP的集成開(kāi)發(fā)平臺(tái)環(huán)境。里面已經(jīng)預(yù)設(shè)了Xdebug的調(diào)試工具,只需要自己改下配置的就可以了2013-11-11php+ajax實(shí)現(xiàn)無(wú)刷新分頁(yè)的方法
這篇文章主要介紹了php+ajax實(shí)現(xiàn)無(wú)刷新分頁(yè)的方法,詳細(xì)講述了數(shù)據(jù)庫(kù)的創(chuàng)建、Ajax文件的實(shí)現(xiàn)及PHP調(diào)用方法,需要的朋友可以參考下2014-11-11