16 php資料庫抽象層PDO 五

2021-07-12 03:06:58 字數 1642 閱讀 8768

mysql目前只有innodb和bdb兩個資料表型別才支援事務。建議用innodb表

create table employees(...) type=innodb;//使用type指定表型別為innodb

在預設情況下,mysql是以自動提交(autocommit)模式執行的,這就意味著所執行的每乙個語句都將立即寫入資料庫中。如果使用事務安全的**型別,是不希望有自動提交的行為的。要在當前的繪畫中關閉自動提交。

mysql>set autocommit=0;//在當前的會話中關閉自動提交

如果自動提交被開啟了,必須使用如下語句開始乙個事物,如果自動提交是關閉的,不需要使用這條命令,因為當輸入乙個sql語句時,乙個事務將自動啟動。

mysql>start transaction;//開啟乙個事務

在完成了一組事務的語句輸入後,可以使用如下所示語句將其提交給資料庫。只有提交了乙個事務,該事務才能在其他會話中被其他使用者所見

mysql>commit;//提交乙個事務給資料庫

如果改變主意,可以使用:

mysql>roolback;//事務將被回滾,所有操作都將被取消

如果需要乙個事務,那麼必須使用pdo物件中begintransaction()方法來啟動乙個事務,可以使用pdo物件中的commit()方法或rollback()方法來結束該事務。

<?php

$pdo = new pdo("mysql:host=localhost;dbname=demo", "mysql_urer", "mysql_password");

$pdo->setattribute(pdo::attr_errmode, pdo::errmode_exception);//設定異常處理模式

$pdo->setattribute(pdo::attr_autocommit, 0); //關閉自動提交

try where name='usera'");//轉出

if($affected_rows>0)

echo

"usera成功轉出元人民幣

"; else

throw

new pdoexception('usera轉出失敗');//失敗丟擲異常,不再向下執行

$affected_rows = $pdo->exec("update account set cash=cash+ where name='userb'");//轉入

if($affected_rows>0)

echo

"成功向usreb轉入元人民幣

"; else

throw

new pdoexception('userb轉入失敗'); //失敗丟擲異常,不向下再執行,轉到catch區塊

echo

'交易成功!';

$pdo->commit();//如果執行到此處表示前面兩個查詢執行成功,整個事務執行成功

}catch(pdoexception $e)

$pdo->setattribute(pdo::attr_autocommit, 1);//重新開啟自動提交

php資料庫抽象層 PDO

下面就來介紹一下資料庫抽象層pdo的使用 pdo php data objects 是乙個輕量級的php擴充套件,提供了乙個資料訪問抽象層。還要就是pdo只能在php5.0以上版本使用。下面來介紹一下pdo常用的預定義常量 pdo param bool integer 表示布林資料型別 pdo pa...

資料庫抽象層 PDO

資料庫抽象層 在資料遷移和專案操作多資料庫時,為了便於操作而提供一種的解決方案。當從乙個資料庫系統向另乙個資料庫系統遷移時,幾乎不用更改太多的程式 如將ms sql server遷移到mysql。規劃必須規範,盡量使用相同的資料進行物件例項化,並且使用相同的資料庫抽象層 如pdo 這樣只需要改變系統...

PDO資料庫訪問抽象層

pdo建構函式說明 dsn資料來源名稱,包括主機名埠號和資料庫名稱 username資料庫使用者名稱 password 密碼 driver options連線資料庫的其他選項 pdo是比mysql更高效,資料庫遷移時基本不用更改太多的 sql語句 pdo exec 返回sql語句後受影響的行數 qu...