2009-06-01 167 views
3

例如:使用户A的支付转移到用户B. 帐户用户A:用户B的-10美元 帐户:+10美元是否有可能使用php来执行mysql数据库事务和回滚?

如果有交易,并且不顺心的事,一切变得百废待兴。因此,对于交易,不会发生用户A的账户减少10,而用户B的账户没有增加10。

我知道java人利用交易和遍布各地的回滚。但我从来没有听说过PHP的人会这样做。

回答

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

确保您的表使用InnoDB引擎:MyISAM不支持事务。

评论更新

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

MySQL附带InnoDB支持编译默认情况下,实际上它需要一些努力来禁用它。

我从来没有听说过MySQLInnoDB即使最便宜的主机禁用。

+0

你需要一个自己的innoDB服务器,因为没有廉价的托管服务器,对吗? – Thanks 2009-06-01 12:54:51

1

如果使用PDO,它也有事务支持

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

就像是已经说了,请确保您使用InnoDB存储引擎。

+0

这是线程安全的吗?如果20个用户在几乎同一时间开始创作,那么几个线程几乎可以同时完成这些任务? – Thanks 2009-06-01 12:53:09

相关问题