PHP PDO トランザクションをロールバックできません
public function submit(){
try {
$this->beginTransaction();
$this->exec('update people set age=2 ' );
$this->exec('INSERT INTO course (course,num) VALUES ("数学",100)');
$this->commit();
}catch ( Exception $e){
$this->rollBack();
}
}
これは上記のような私のトランザクション モジュールです。しかし、私はそうではありません。 SQL の実行エラーが発生した場合、pdo はロールバックを実行しません。 ご指定いただければ幸いです。 。 。
-----解決策---------
try で試行しないでください。ここでは例外がスローされないと思います
$this->beginTransaction(); $this->exec('年齢=2 に設定された人々を更新'); //$step1 = mysql_error();//クラス内で、SQL の実行中にエラーが発生した場合にエラー コードと対応する関数を取得するように変更します。 $this->exec('INSERT INTO course (course,num) VALUES ("数学",100)'); //$step2 = mysql_error(); if (!$step1 && !$step2) { $this->commit(); } それ以外 { $this->rollBack(); } <br><font color="#e78608">------解決策------------------</font><br> 2 階の意見に同意します。<br> 2 つのステートメントは true または false のみを返す必要があります <br><br> 判断するには if のみを使用し、try は使用しないでください <div class="clear"></div>