pdo和mysql的寫法不一樣,處理方式一樣
<?php
$dbhost = 'localhost:3306'; // mysql伺服器主機位址
$dbuser = 'root'; // mysql使用者名稱
$dbpass = '123456'; // mysql使用者名稱密碼
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
// 設定編碼,防止中文亂碼
mysqli_query($conn, "set names utf8");
mysqli_select_db( $conn, 'runoob' );
mysqli_query($conn, "set autocommit=0"); // 設定為不自動提交,因為mysql預設立即執行
mysqli_begin_transaction($conn); // 開始事務定義
if(!mysqli_query($conn, "insert into runoob_transaction_test (id) values(8)"))
if(!mysqli_query($conn, "insert into runoob_transaction_test (id) values(9)"))
mysqli_commit($conn); //執行事務
mysqli_close($conn);
?>
<?php
try
catch
(pdoexception
$e
)
/*
* 事務處理
*
* 張三從李四那裡買了一台 2000 元的電腦
* 從張三帳號中扣出 2000元
* 向李四賬號中加入 2000元
* 從商品表中減少一台電腦
* myisam innodb
*/
try
where id=1"
;
$affected_rows
=
$pdo
->
exec
(
$sql
);
if
(!
$affected_rows
)
throw
new
pdoexception(
"張三轉出失敗"
);
//那個錯誤丟擲異常
$sql
=
"update zhanghao set price=price+ where id=3"
;
$affected_rows
=
$pdo
->
exec
(
$sql
);
if
(!
$affected_rows
)
throw
new
pdoexception(
"向李四轉入失敗"
);
echo
"交易成功!"
;
$pdo
->commit();
//交易成功就提交
}
catch
(pdoexception
$e
)
//自動提交,如果最後不自動提交,轉賬是不成功的
$pdo
->setattribute(pdo::attr_autocommit,1);
//設定錯誤報告模式 errmode_silent errmode_warning
在Mysql儲存過程中使用事務例項
create definer root localhost procedure createbusiness parameter1 int begin routine body goes here.declare flag int default parameter1 宣告變數flag,將引數值賦給...
PHP使用Mysql事務例項解析
資料庫連線 conn mysql connect localhost root mysql select db test conn mysql query set names gbk 支援事務的表必須是innodb型別 一段事務中只能出現一次 mysql query start transactio...
SQL中使用事務
begin transaction 開始事務 rollback transaction 提交事務 commit transaction 回滾事務 use pubs declare interrorcode int begin tran update authors set phone 415 354...