定義:PDO
事務(wù)功能,并非PDO
額外多出了一項功能,而是將原來MySQL
所支持的事務(wù)操作進行了一定的封裝實現(xiàn)。注意:事務(wù)執(zhí)行是否成功是由MySQL
對應(yīng)的存儲引擎是否支持決定的。
1.事務(wù)功能回顧:事務(wù)是指改變默認的一次操作一次寫入數(shù)據(jù)表的機制,而是通過事務(wù)日志記錄操作,在最后通過一次性操作寫入到數(shù)據(jù)表。
-
開啟事務(wù):
start transaction
,寫操作停止直接寫入數(shù)據(jù)表,而是記錄到事務(wù)日志 -
事務(wù)操作:具體的寫操作,通常多個步驟多條指令
-
提交事務(wù):即事務(wù)操作結(jié)束
成功提交:
commit
,所有事務(wù)日志內(nèi)容同步到數(shù)據(jù)表,并清空當前事務(wù)日志失敗回滾:
rollback
,直接清空當前事務(wù)日志
2.PDO類中提供一套方案來實現(xiàn)事務(wù)操作
<?php $pdo = new PDO('mysql:host=localhost;port=3306;dbname=my_database','root','root'); $pdo->beginTransaction() or die('事務(wù)開啟失敗');//開啟事務(wù) $pdo->exec('insert into student values()');//執(zhí)行事務(wù) //終止事務(wù) $pdo->commit(); //成功提交 $pdo->rollback(); //失敗回滾
3.在事務(wù)操作中,有一種回滾點
機制,在PDO
中沒有實現(xiàn),如果有必要,可以通過SQL指令
設(shè)置來實現(xiàn)
<?php $pdo = new PDO('mysql:host=localhost;port=3306;dbname=my_database','root','root'); $pdo->beginTransaction() or die('事務(wù)開啟失敗');//開啟事務(wù) $pdo->exec('insert into student values()');//執(zhí)行事務(wù) //設(shè)置回滾點 $pdo->exec('savepoint sp1'); //繼續(xù)執(zhí)行事務(wù)... //回滾 $pdo->exec('rollback to sp1'); //終止事務(wù) $pdo->commit(); //成功提交 $pdo->rollback(); //失敗回滾 ?>
推薦:php教程,php視頻教程