2つのテーブルにデータを挿入するループがあります。ループの最初の反復では挿入は成功しますが、2回目の反復では挿入は失敗します。MySQLトランザクション、ロールバックが機能しません。(PHP PDO)
私はスクリプトを作成して、いずれかの反復が失敗した場合、トランザクション全体をロールバックする必要があります。ただし、これは機能しません。
最初の反復は、(それが成功した)
<?php
include('model/dbcon.model.php');
$languages = array('project_nl', 'project_en');
DBCon::getCon()->beginTransaction();
$rollback = true;
foreach($languages as $language) {
$Q = DBCon::getCon()->prepare('INSERT INTO `'.$language.'`(`id`, `name`, `description`, `big_image`) VALUES (:id,:name,:description,:big_image)');
$Q->bindValue(':id', '1', PDO::PARAM_INT);
$Q->bindValue(':name', 'test', PDO::PARAM_INT);
$Q->bindValue(':description', 'test', PDO::PARAM_INT);
$Q->bindValue(':big_image', 'test', PDO::PARAM_INT);
try {
$Q->execute();
} catch (PDOException $e) {
$rollback = true;
}
}
if ($rollback) {
echo 'rollbacking...';
DBCon::getCon()->rollBack();
} else {
echo 'commiting...';
DBCon::getCon()->commit();
}
?>
はなぜトランザクション全体がロールバックされていません...ロールバックされませんか?
ありがとうございます。
自動コミットをオンにするかどうかをチェックします。 – khalid