Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用php执行mysql数据库事务和回滚?_Php_Mysql_Transactions - Fatal编程技术网

是否可以使用php执行mysql数据库事务和回滚?

是否可以使用php执行mysql数据库事务和回滚?,php,mysql,transactions,Php,Mysql,Transactions,示例:从用户a向用户B进行付款转账。 用户A账户:-10美元 用户B账户:+10美元 如果有一个事务,并且出现了一些问题,那么所有的事情都会被撤销。因此,对于事务,用户A的帐户不会减少10,而用户B的帐户不会增加10 我知道java人到处使用事务和回滚。但我从来没有听说过PHP的人这么做 $db = new mysqli("localhost", "", "", ""); $db->autocommit(FALSE); if ($db->query("INSERT ..."))

示例:从用户a向用户B进行付款转账。 用户A账户:-10美元 用户B账户:+10美元

如果有一个事务,并且出现了一些问题,那么所有的事情都会被撤销。因此,对于事务,用户A的帐户不会减少10,而用户B的帐户不会增加10

我知道java人到处使用事务和回滚。但我从来没有听说过PHP的人这么做

$db = new mysqli("localhost", "", "", "");
$db->autocommit(FALSE);
if ($db->query("INSERT ..."))
    $db->commit();
else
    $db->rollback();
确保您的表使用
InnoDB
引擎:
MyISAM
不支持事务

评论更新

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

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


我从来没有听说过MySQL被最便宜的主机禁用了
InnoDB

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


如前所述,确保使用innoDB存储引擎。

线程安全吗?如果20个用户在几乎相同的时间开始工作,那么多个线程在几乎相同的时间做类似的事情呢?@谢谢:我想最基本的例子是他们排队。数据库被设计来处理这样的事情,20个用户几乎同时启动事务应该是完全可以忽略的。你需要一个自己的innoDB服务器,因为没有便宜的主机拥有它,对吗?