I.はじめに
PDO(PHPデータオブジェクト)は抽象データモデルは、データベース接続の様々なサポートし、さまざまなデータベースにアクセスするための共通のインタフェースを提供します。
PHPのためのPDO拡張モジュールは、軽量のデータベースへのアクセス、永続インタフェースを定義します。それ自体では、各データベース駆動型のPDOインターフェイスが現れ、自分の特性の定期的な形に拡張することができます達成するためにデータベースにアクセスするための特定のデータベースPDOドライバを使用する必要があり、任意のデータベース操作を実装していません。それは関係なく、あなたが使用しているデータベースの、あなたはAPIの同じセットを使用してデータベースを操作できることを意味します。
PHPでは、MySQLはいくつかの方法でリンクします。
- 機能のMySQLの家族(PHP 7非推奨)
- MySQLiを系列関数、上記の拡張バージョンである、そのような事前にコンパイルし、パラメータバインディングなどの新機能が追加されます
- PDO
二、PDO事前に定義されたクラス
参照:https://www.php.net/manual/zh/book.pdo.php
PDO、PDOStatementに和PDOException
(データベースとPHPの間のリンクの代わりに)PDOクラス。
(関節実行結果セットの後に準備された文と文を表す)をPDOStatementクラス。
PDOExceptionカテゴリ(の例外の簡単な書き換え)。
三、PDOとプリコンパイルおよびパラメータバインディング
PHPではなく、いくつかのデータベースは、プリコンパイルされた関数をサポートしているので(転送、単一引用符)、プリコンパイルシミュレートするために、デフォルトのSQLステッチを使用していないので、主に最大の互換性の問題のために、結合し、コンパイル済みのデフォルトのパラメータを使用してのAPIを用意し使用しています。
あなたは本当のプリコンパイルされた($ PDO-> setAttributeメソッド(PDO ::使用している場合は 、ATTR_EMULATE_PERPARES、false)を// むしろアナログよりも、地元のプリペアドステートメントを使用)、クライアントは2に送信する必要がある:1、SQLテンプレート; 2、 SQLクエリパラメータネットワーク要求のオーバーヘッドよりもですが、パフォーマンスには影響しません、コンパイルが成功したら、プリコンパイルプロセスは、最初の要求で発生するため、第二は、直接使用することができ、かつ二次必要としません、コンパイルは(同じセッション、つまり、各時間は、複数の呼の要求だけプリコンパイルさがあります)。
MySQLのサポートをプリコンパイルし、まだ比較的弱い、唯一のPHPのすべての要求は、新しいセッションで、セッションレベルをサポートしているため、各要求は、必然的に、プリコンパイルされた再実行する必要があります。あなたは、接続プーリングを使用する場合でも、それは、プリコンパイルのパフォーマンスを向上させるために、同じデータ接続PHPのセッションを使用するために複数の要求を行うことができます。
四、PDOトランザクション
スクリプトの最後、または完全な未処理のトランザクションがある場合は、クローズする接続では、PDOはそれを自動的にロールバックされます。これは、スクリプトの予期しない終了のためのセキュリティプログラムです。あなたが明示的にトランザクションをコミットしていない場合は、何かは、データのロールバックのセキュリティのために、間違っていたことが想定されます。
五、PDO効率
サードパーティのテストから:
テーブルのPHP5.3,60の複数データ2GBの、5%〜15%よりも低いPDO凝乳直接のMySQLの効率。
接続された負荷で長いターンが直接、比較的安定したPDOのMySQLよりも高くなった後、接続速度も利点です。
実用的なアプリケーション、プログラムの90%は、データベースの移行のためではない、PDOの必要性が大きくないようです。
要約:新しいアプリケーションで推奨PDOを使用しようと、古いアプリケーションを再構成する必要はありません。実際には、PDOの基礎となる、現在主流の基本的な枠組みが達成されます。