【问题标题】:Transaction is not working - PHP and MySql事务不工作 - PHP 和 MySql
【发布时间】:2015-12-10 10:07:07
【问题描述】:

我是 PHP 事务概念的初学者。我的代码不起作用。我不知道我的错误是什么。任何人都可以帮助我找出我的错误。

我的第一个查询是错误的。它没有用。二是成功执行。如果我通过 IF 条件检查,我的控件成功移动到其他部分。没关系。但是我的回滚功能不起作用。第二个查询日期将显示在表中。

我的错误是什么?

<?php
$link = mysqli_connect("localhost", "root", "", "hrms_db");

/* check connection */
if (mysqli_connect_errno()) {
  printf("Connect failed: %s\n", mysqli_connect_error());
  exit();
}

/* Transaction start */
mysqli_begin_transaction($link, MYSQLI_TRANS_START_READ_WRITE);

/* disable autocommit */
mysqli_autocommit($link, FALSE);

$result1  = mysqli_query($link, "INSERT INTO EmployeeBackup (Name, OfficialEmail, Department, Manager_ID, MobileNO, Status, Location, full_name) value ('s', 's', '1' , '3', '5', '4', '5' , '78')");
$result2 = mysqli_query($link, "INSERT INTO hrms_general_master (lookup_type,   lookup_description) value ('Testing', 'Testing')" );

if($result1 && $result2){
/* commit insert */
mysqli_commit($link);
echo "All queries were executed successfully";
} else{
/* Rollback */
mysqli_rollback($link);
echo "All queries were rolled back";
}

mysqli_close($link);
?>

然后请解释mysqli_begin_transaction中使用的不同类型的参数及其用途。我对mysqli_begin_transactionmysqli_commit 有一点怀疑。请澄清我的疑问。

谢谢。

【问题讨论】:

  • 哇。谢谢。我错误地设置了我的搜索引擎。现在我改为 InnoDB。现在它正在工作。但我又多了一个疑问。为什么事务只在 InnoDB 中有效?
  • 谢谢苏宾托马斯。我想知道程序执行的流程。我阅读了更多文章。但我仍然对此表示怀疑。请在交易流程中分享更多细节。
  • mysql就是这样创建的,只支持InnoDB的事务,其他引擎可能更快但缺少这个非常重要的功能。
  • 谢谢xception..!!

标签: php mysql


【解决方案1】:

您需要 InnoDB 访问方法才能使用事务。创建 MyISAM 的人没有在他们的代码中包含交易。

网络上的大量教程一般解释了 DBMS 事务,特别是 MySQL 事务。这里只是一个。 http://www.tutorialspoint.com/mysql/mysql-transactions.htm

【讨论】:

  • 谢谢奥利琼斯!我将访问方法更改为 InnoDB。现在它工作正常。再次非常感谢。但我仍然对这个交易概念有一点怀疑。请分享一些与交易相关的更多细节。琼斯!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-28
  • 1970-01-01
  • 2013-05-22
  • 1970-01-01
  • 1970-01-01
  • 2015-10-20
  • 2015-03-27
相关资源
最近更新 更多