这是我用来插入记录的代码。无论何时出现插入错误,即使我有回滚,订户表自动编号仍将增加?问题是什么? 我只是想在发生错误时不要添加自动增量编号。感谢您的帮助。带有消息'没有活动事务'的未捕获异常'PDOException'?
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->setAttribute(PDO::ATTR_AUTOCOMMIT, FALSE);
$conn->beginTransaction();
try {
$email = $_POST['Email'];
$FirstName = $_POST['FirstName'];
$LastName = $_POST['LastName'];
$query="INSERT INTO subscriber (Email,FirstName,LastName,CreateDate) VALUES (?,?,?,CURDATE())";
$stmt = $conn->prepare($query);
$stmt->bindParam(1, $email , PDO::PARAM_STR);
$stmt->bindParam(2, $FirstName, PDO::PARAM_STR);
$stmt->bindParam(3, $LastName, PDO::PARAM_STR);
$stmt->execute();
$conn->commit();
}
catch(PDOException $e)
{
$conn->rollBack();
die ($e->getMessage()."<a href='addSub.php'>Back</a>");
}
$conn->beginTransaction();
try {
$userID = $_SESSION['username'];
$query="INSERT INTO list_sub (SubID,ListID) VALUES ('',$_SESSION[ListID])";
$stmt = $conn->prepare($query);
$stmt->execute();
$conn->commit();
}
catch(PDOException $e)
{
$conn->rollBack();
die ($e->getMessage()."<a href='addSub.php'>Back</a>");
}
$conn = null;}
它不再显示该错误消息,但它不会回滚。每当出现错误时,用户表仍会增加自动增量编号。 – user782104 2012-02-23 18:23:20
它应该自动增加 - 这是预期的行为。 – thetaiko 2012-02-23 18:28:18
这意味着我必须在我的PHP代码中使用一些sql语句,例如'set table auto-inc number = x -1'来将其回滚?谢谢〜 – user782104 2012-02-23 18:30:13