2011-08-28 94 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