Latest web development tutorials
×

PHP コース

PHP コース PHP 簡単な紹介 PHP インストール PHP 文法 PHP 変数 PHP echo/print PHP データの種類 PHP 定数 PHP 文字列 PHP 演算子 PHP If...Else PHP Switch PHP 配列 PHP 配列のソート PHP スーパーグローバル PHP While 循環 PHP For 循環 PHP 関数 PHP マジック変数 PHP 名前空間 PHP オブジェクト指向の

PHP フォーム

PHP フォーム PHP フォーム認証 PHP フォーム - 必要なフィールド PHP フォーム - 確認メールおよびURL PHP 完全なフォームインスタンス PHP $_GET 変数 PHP $_POST 変数

PHP 応用チュートリアル

PHP 多次元配列 PHP 日付 PHP 含みます PHP ファイル PHP ファイルのアップロード PHP Cookie PHP Session PHP E-mail PHP セキュリティ E-mail PHP Error PHP Exception PHP フィルタ PHP 高度なフィルタ PHP JSON

PHP 7 新機能

PHP 7 新機能

PHP データベース

PHP MySQL 簡単な紹介 PHP MySQL 接続 PHP MySQL データベースの作成 PHP MySQL データテーブルを作成します。 PHP MySQL データを挿入 PHP MySQL 複数のデータの挿入 PHP MySQL プリペアドステートメント PHP MySQL データを読みます PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX 簡単な紹介 AJAX PHP AJAX データベース AJAX XML AJAX 実時間探索 AJAX RSS Reader AJAX 投票

PHP リファレンスマニュアル

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP 画像処理 PHP RESTful

PHP PDO総務自動コミット

PHPのPDOリファレンスマニュアル PHPのPDOリファレンスマニュアル

今接続PDOは、クエリの開始前で行ってきましたを介し、最初にPDOが業務を管理する方法を理解する必要があります。

トランザクションサポートの4つのプロパティ(ACID):

  • アトミック(不可分)
  • 一貫性(整合性)
  • 絶縁(アイソレーション)
  • 永続(耐久性)

もっと単純に、すべての操作は、トランザクション内であっても段階的な実施を行って、だけでなく、セキュリティを保証するために、データベースに適用され、他の接続からの時間干渉に提出されることはありません。

トランザクション操作も自動的にそれが簡単にスクリプト内のエラーを処理することができている、(まだ提出していないと仮定して)要求に応じて取り消すことができます。

取引は通常変更「貯金」アップしてから発効させ、実装の数で行われます。そうすることの利点大幅に変更することができ、これらの効率を提供することにあります。

つまり、トランザクションはスクリプトが速く、潜在的により堅牢にすることができます(あなたはまだ、その利益を享受するために、それらを正しく使用する必要があります)。

残念ながら、すべてのデータベースは、トランザクションをサポートしていますので、あなたが最初の接続を開くときに、PDOは、いわゆる「自動コミット」動作モードを必要とします。

自動コミットモードは、データベースがありません、トランザクションをサポートしていない場合は、データベースのサポート場合は、各クエリの実行は、独自の暗黙的なトランザクションを有することを意味します。

あなたは、トランザクションが必要な場合は、起動するためにPDO ::のbeginTransaction()メソッドを使用する必要があります。 基礎となるドライバがトランザクションをサポートしていない場合、例外PDOExceptionをスローして(関係なく、エラー処理設定のどのような種類の、これは重大なエラー状態です)。

トランザクションが利用可能PDOたら::コミット()やPDO ::ロールバック()トランザクションコードに応じて、完了するために正常に実行されています。

注意:PDOのみかどうかドライバ層の検査でのトランザクション処理能力。 いくつかの実行時の条件は、トランザクションが利用できないことを意味し、データベース・サービスがトランザクションを開始する要求を受け入れた場合、PDO ::のbeginTransaction()はまだTRUEとエラーなしを返します。 トランザクションを使用してみてくださいすると、MySQLデータベースのMyISAMテーブルでは良い例です。

スクリプトが終了したか、接続がクローズされようとしているときに完了したトランザクションがない場合、PDOは自動的にトランザクションをロールバックします。 このセキュリティ対策は、スクリプト内の不整合を回避するのに役立つ予期せずに終了 - 明示的にトランザクションをコミットしていない場合は、仮定はどこか間違っているので、ロールバックは、データのセキュリティを確保するために行われます。

注意:以降でのみ、それは自動的にロールバック発生する可能性があります:: PDOトランザクションを開始するのbeginTransaction()。 手動でトランザクションを開始するクエリを発行する場合は、必要に応じてロールバックすることができない、ように、PDOは、知ることができません。

トランザクションでバッチを実行します:

次の例では、23はIDを割り当て、新しい従業員のためのエントリのセットを作成するとします。 登録者の基本データに加えて、だけでなく、あなたは彼の給料を記録する必要があります。

両方の更新が、それは非常にシンプルですが、PDO ::のbeginTransaction()およびPDO ::コミット()の呼び出しを閉じることによって完成されている、それが変化する前に、他の人がこれらの変更を見ることができない確保することが可能です。

エラーは、catchブロックを発生した場合、トランザクション以降のすべての変更は、最初からロールバックされ、エラーメッセージが出力されました。

<?php
try {
  $dbh = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2', 
      array(PDO::ATTR_PERSISTENT => true));
  echo "Connected\n";
} catch (Exception $e) {
  die("Unable to connect: " . $e->getMessage());
}

try {  
  $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  $dbh->beginTransaction();
  $dbh->exec("insert into staff (id, first, last) values (23, 'Joe', 'Bloggs')");
  $dbh->exec("insert into salarychange (id, amount, changedate) 
      values (23, 50000, NOW())");
  $dbh->commit();
  
} catch (Exception $e) {
  $dbh->rollBack();
  echo "Failed: " . $e->getMessage();
}
?>

トランザクションの変化に限定されるものではなく、それがデータを抽出するために複雑なクエリを発行することができるだけでなく、その情報を使用して、より変更し、クエリを構築するために、トランザクションがアクティブなとき、あなたは他の人が進行中の操作に変更を加えることができないことを保証することができます。


PHPのPDOリファレンスマニュアル PHPのPDOリファレンスマニュアル