2011-08-28 66 views
1

我想在我的代碼的某些關鍵區域使用交易,但實際上並不適合我所做的一切。 我剛剛瞭解到AUTOCOMMIT值默認設置爲1,如果我想要START TRANSACTION和COMMIT或ROLLBACK,我應該將它設置爲0。MYSQL交易的問題,用PHP

  • 有沒有更好的方法來處理自動提交?
  • 我怎麼知道它是否設置?
  • 在加載的每個頁面上它的值是否更改爲AUTOCOMMIT = 1?

回答

2

使用PDO

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$pdo->beginTransaction(); 
try { 
    // do stuff 
    $pdo->commit(); 
} catch (Exception $ex) { 
    $pdo->rollBack(); 
    throw $ex; 
} 
+0

謝謝,我正在讀關於PDO,我想我會使用它的時間。但是現在情況如此,您是否會說我的ROLLBACK()和COMMIT()函數在我的START_TRANSACTION()和AUTOCOMMIT = 0上定義了AUTOCOMMIT = 1是一種解決方法? – Ted

+0

@泰德,請使用最好的工具。現在,該工具是PDO – Phil

+0

'$ pdo-> beginTransaction()'本身需要一個try ... catch塊。因爲可能發生事務已經存在,並且要求在不支持嵌套事務的引擎上啓動新事務可能導致觸發錯誤 – Sudhi