這是我用來插入記錄的代碼。無論何時出現插入錯誤,即使我有回滾,訂戶表自動編號仍將增加?問題是什麼? 我只是想在發生錯誤時不要添加自動增量編號。感謝您的幫助。帶有消息'沒有活動事務'的未捕獲異常'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