ホームページ  >  記事  >  バックエンド開発  >  PHP PDO トランザクションをロールバックできません

PHP PDO トランザクションをロールバックできません

WBOY
WBOYオリジナル
2016-06-13 13:16:361395ブラウズ

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 で試行しないでください。ここでは例外がスローされないと思います

PHP コード



$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>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。