ホームページ  >  記事  >  バックエンド開発  >  PDO トランザクションのロールバックの問題

PDO トランザクションのロールバックの問題

WBOY
WBOYオリジナル
2016-06-23 13:59:151431ブラウズ

{
$dsn="mysql:host=localhost;dbname=dadao;port:3366";
$pdo ::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$pdo- >begintransaction(); ;prepare( $sql);
$stmt->execute(array(':username'=>'insert title1'));
$stmt->execute(array(':username'=>NULL) ); $pdo->commit();

} catch (Exception $e) {
echo 'トランザクション例外、今すぐロールバック'; $e->getMessage(); $ pdo->rollBack();
}
単純なトランザクション コードでは、データベース テーブル user のユーザー名を空にすることはできません。ヒント: トランザクションは異常です。ロールバックします。列 'username' を null1 にすることはできません。データベース テーブルは書き込まれません。ただし、$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); を削除すると、プロンプトは表示されず、レコードがデータベースに挿入されます。 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); このコード行は間違ったプロンプト メソッドを設定しているのではないでしょうか?




ディスカッションへの返信 (解決策)

はい、エラー処理メソッドを設定するためです

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); なしで

試してみてくださいcatch 構造は無効になります $pdo->rollBack(); は実行されません

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