これは私がレコードを挿入するために使用するコードです。挿入エラーが発生するたびに、ロールバックしても加入者テーブルのauto-inc番号は増えますか?何が問題ですか? エラーが発生したときに自動インクリメント番号を追加しないだけです。たくさんのことが助けになります。あなたのコードに行番号を知らなくても'アクティブなトランザクションはありません'というメッセージがあるキャッチされない例外 '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
があるときはいつも、自動インクリメント番号を増やします。自動インクリメントする必要があります。 – thetaiko
つまり、私は 'set table auto-inc number = x -1'のようないくつかのSQL文をPHPのコードで使用しなければならないということです。ありがとう〜 – user782104