事务不起作用 - PHP和MySql

时间:2015-09-14 11:58:09

标签: php mysql

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

我的第一个查询是错误的。它没有用。第二个成功执行。如果我通过IF条件检查,我的控件成功移动到else部分。没关系。但我的回滚功能无法正常工作。第二个查询日期将出现在表格中。

我的错误是什么?

<?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提出了更多疑问。请澄清我的疑问。

谢谢。

1 个答案:

答案 0 :(得分:3)

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

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