有可能用PHP做mysql数据库事务和回滚吗?

时间:2009-06-01 10:22:13

标签: php mysql transactions

示例:进行从用户A到用户B的付款转帐。 用户A的帐户:-10美元 用户B的帐户:+10美元

如果有交易,出现问题,一切都会被取消。因此,对于交易,用户A的帐户不会减少10,而用户B的帐户不会增加10。

我知道java人们在各处都使用了事务和回滚。但是我从来没有听说过PHP人员这样做。

2 个答案:

答案 0 :(得分:5)

$db = new mysqli("localhost", "", "", "");
$db->autocommit(FALSE);
if ($db->query("INSERT ..."))
    $db->commit();
else
    $db->rollback();

确保您的表格使用InnoDB引擎:MyISAM不支持交易。

评论更新

InnoDBMySQL使用的两个主要存储引擎之一,另一个是MyISAM

默认情况下,

MySQL附带InnoDB支持编译,实际上需要花费一些力气才能将其禁用。

即使是最便宜的主持人,我也从未听说MySQLInnoDB禁用。

答案 1 :(得分:1)

如果你使用pdo,它也有交易支持

http://us2.php.net/manual/en/pdo.begintransaction.php

就像已经说过的那样,请确保使用innoDB存储引擎。