PHP5 では POD 拡張機能が追加され、異なるデータベースが同じメソッド名を使用してデータベース接続の問題を解決します。
PDO の特徴:
パフォーマンス。 PDO は、既存のデータベースの拡張における成功と失敗について最初から学びました。 PDO のコードはまったく新しいため、PHP 5 の最新機能を活用するためにパフォーマンスをゼロから再設計する機会があります。
能力。 PDO は、RDBMS の固有の機能に簡単にアクセスできるようにしながら、基盤として一般的なデータベース機能を提供するように設計されています。
シンプルです。 PDO は、データベースの操作を簡単にするように設計されています。 API はコードに強制的に組み込まれることはなく、各関数呼び出しが何を行うのかを明確にします。
実行時に拡張可能。 PDO 拡張機能はモジュール式であるため、PHP プログラム全体を再コンパイルまたは再インストールすることなく、実行時にデータベース バックエンドのドライバーを読み込むことができます。たとえば、PDO_OCI 拡張機能は、PDO 拡張機能の代わりに Oracle データベース API を実装します。 MySQL、PostgreSQL、ODBC、Firebird 用のドライバーもあり、さらに多くのドライバーが開発中です。
PDOのインストール
PHP の phpinfo() 関数を通じて、PDO 拡張機能がインストールされているかどうかを確認できます。
1. Unix/Linux システムに PDO をインストールします
Unix または Linux では、次の拡張機能を追加する必要があります:
extension=pdo.so
2. Windowsにpdo
PDO とすべての主要なドライバーは共有拡張機能として PHP とともに配布されており、それらを有効にするには、php.ini ファイルを編集して次の拡張機能を追加するだけです:
拡張子=php_pdo.dll
さらに、以下に対応するさまざまなデータベース拡張機能があります:
リーリー php.ini を開き、上記のすべての行の前にあるセミコロンを削除します。
これらの構成を設定した後、PHP または Web サーバーを再起動する必要があります。
次に、pdo を使用する例として mysql を使用します。 リーリー
pdo の詳細な紹介を見てみましょう:
1. 事前定義された定数: 注: リクエストされたクラスに属性が存在しない場合、__set() マジック メソッドが呼び出されます PDO::ATTR_DRIVER_NAME:を使用した例: 2.PDOクラス:
PDO::PARAM_BOOL (整数)
はブールデータ型を表します。
PDO::PARAM_NULL (整数)
SQL の NULL データ型を表します。
PDO::PARAM_INT (整数)
SQL の整数型を表します。
PDO::PARAM_STR (整数)
SQL の CHAR、VARCHAR、またはその他の文字列型を表します。
PDO::PARAM_LOB (整数)
SQL のラージ オブジェクト データ型を表します。
PDO::PARAM_STMT (整数)
はレコードセットのタイプを表します。現在、どのドライバーでもサポートされていません。
PDO::PARAM_INPUT_OUTPUT (整数)
パラメータをストアドプロシージャのINOUTパラメータとして指定します。この値は、明示的な PDO::PARAM_* データ型とビットごとの OR 演算する必要があります。
PDO::FETCH_LAZY (整数)
取得方法を指定し、結果セットの各行をオブジェクトとして返します。このオブジェクトの変数名は列名に対応します。 PDO::FETCH_LAZY は、アクセス用のオブジェクト変数名を作成します。 PDOStatement::fetchAll() では無効です。
PDO::FETCH_ASSOC (整数)
取得方法を指定し、対応する結果セットの各行を列名でインデックス付けされた配列として返します。結果セットに同じ名前の複数の列が含まれている場合、PDO::FETCH_ASSOC は列名ごとに 1 つの値のみを返します。
PDO::FETCH_NAMED (整数)
取得方法を指定し、対応する結果セットの各行を列名でインデックス付けされた配列として返します。結果セットに同じ名前の複数の列が含まれている場合、PDO::FETCH_ASSOC は各列名の値を含む配列を返します。
PDO::FETCH_NUM (整数)
取得方法を指定し、対応する結果セットの各行を列 0 から始まる列番号でインデックス付けされた配列として返します。
PDO::FETCH_BOTH (整数)
取得方法を指定し、対応する結果セットの各行を列0から始まる列番号と列名でインデックス付けされた配列として返します。
PDO::FETCH_OBJ (整数)
取得方法を指定し、結果セットの各行を列名に対応する属性名を持つオブジェクトとして返します。
PDO::FETCH_BOUND (整数)
取得方法を指定し、TRUE を返し、結果セットの列値を PDOStatement::bindParam() または PDOStatement::bindColumn() メソッドを通じてバインドされた PHP 変数に割り当てます。
PDO::FETCH_COLUMN (整数)
取得方法を指定し、結果セットの次の行から必要な列を返します。
PDO::FETCH_CLASS (整数)
取得メソッドを指定し、要求されたクラスの新しいインスタンスを返し、クラス内の対応する属性名に列をマップします。
PDO::FETCH_INTO (整数)
取得方法を指定し、要求されたクラスの既存のインスタンスを更新し、クラス内の対応する属性名に列をマッピングします。
PDO::FETCH_FUNC (整数)
完全にカスタマイズされた方法でオンザフライでデータを処理できます。 (PDOStatement::fetchAll() でのみ有効)。
PDO::FETCH_GROUP (整数)
値ごとにグループ化して返します。通常は、PDO::FETCH_COLUMN または PDO::FETCH_KEY_PAIR とともに使用されます。
PDO::FETCH_UNIQUE (整数)
一意の値のみを受け取ります。
PDO::FETCH_KEY_PAIR (整数)
2 つの列を含む結果セットを配列に取得します。最初の列はキー名、2 番目の列は値です。 PHP 5.2.3 以降で利用可能です。
PDO::FETCH_CLASSTYPE (整数)
最初の列の値に基づいてクラス名を決定します。
PDO::FETCH_SERIALIZE (整数)
PDO::FETCH_INTO に似ていますが、オブジェクトをシリアル化された文字列として表します。 PHP 5.1.0 以降で利用可能です。 PHP 5.3.0 以降、このフラグが設定されている場合、クラスのコンストラクターは呼び出されません。
PDO::FETCH_PROPS_LATE (整数)
プロパティを設定する前にコンストラクターを呼び出します。 PHP 5.2.0 以降で利用可能です。
PDO::ATTR_AUTOCOMMIT (整数)
この値が FALSE の場合、PDO はデータベース接続でトランザクションを開始するために自動コミットを無効にしようとします。
PDO::ATTR_PREFETCH (整数)
アプリケーションの速度とメモリ使用量のバランスをとるためにプリフェッチ サイズを設定します。すべてのデータベースとドライバーの組み合わせがプリフェッチ サイズの設定をサポートしているわけではありません。プリフェッチ サイズを大きくするとパフォーマンスが向上しますが、メモリの消費量も増加します。
PDO::ATTR_TIMEOUT (整数)
データベースへの接続のタイムアウト秒を設定します。
PDO::ATTR_ERRMODE (整数)
このプロパティの詳細については、「エラーとエラー処理」セクションを参照してください。
PDO::ATTR_SERVER_VERSION (整数)
これは読み取り専用のプロパティであり、PDO に接続されているデータベース サービスのバージョン情報を返します。
PDO::ATTR_CLIENT_VERSION (整数)
これは読み取り専用のプロパティであり、PDO ドライバーによって使用されるクライアント ライブラリのバージョン情報を返します。
PDO::ATTR_SERVER_INFO (整数)
これは読み取り専用のプロパティです。 PDO が接続されているデータベース サービスに関するメタ情報を返します。
PDO::ATTR_CONNECTION_STATUS (整数)
PDO::ATTR_CASE (整数)
PDO::CASE_* のような定数を使用して、列名の大文字と小文字を強制的に指定します。
PDO::ATTR_CURSOR_NAME (整数)
使用するカーソルの名前を取得または設定します。スクロール可能なカーソルや位置指定された更新を使用する場合に非常に便利です。
PDO::ATTR_CURSOR (整数)
カーソルの種類を選択します。 PDO は現在、PDO::CURSOR_FWDONLY と PDO::CURSOR_SCROLL をサポートしています。スクロール可能なカーソルが実際に必要でない限り、通常は PDO::CURSOR_FWDONLY です。
PDO::ATTR_DRIVER_NAME (文字列)
ドライバー名を返します。
<?php
if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
echo "Running on mysql; doing something mysql specific here\n";
}
?>
PDO::ATTR_ORACLE_NULLS (integer)
在获取数据时将空字符串转换成 SQL 中的 NULL 。
PDO::ATTR_PERSISTENT (integer)
请求一个持久连接,而非创建一个新连接。关于此属性的更多信息请参见 连接与连接管理 。
PDO::ATTR_STATEMENT_CLASS (integer)
PDO::ATTR_FETCH_CATALOG_NAMES (integer)
将包含的目录名添加到结果集中的每个列名前面。目录名和列名由一个小数点分开(.)。此属性在驱动层面支持,所以有些驱动可能不支持此属性。
PDO::ATTR_FETCH_TABLE_NAMES (integer)
将包含的表名添加到结果集中的每个列名前面。表名和列名由一个小数点分开(.)。此属性在驱动层面支持,所以有些驱动可能不支持此属性。
PDO::ATTR_STRINGIFY_FETCHES (integer)
PDO::ATTR_MAX_COLUMN_LEN (integer)
PDO::ATTR_DEFAULT_FETCH_MODE (integer)
自 PHP 5.2.0 起可用。
PDO::ATTR_EMULATE_PREPARES (integer)
自 PHP 5.1.3 起可用。
PDO::ERRMODE_SILENT (integer)
如果发生错误,则不显示错误或异常。希望开发人员显式地检查错误。此为默认模式。关于此属性的更多信息请参见 错误与错误处理 。
PDO::ERRMODE_WARNING (integer)
如果发生错误,则显示一个 PHP E_WARNING 消息。关于此属性的更多信息请参见 错误与错误处理。
PDO::ERRMODE_EXCEPTION (integer)
如果发生错误,则抛出一个 PDOException 异常。关于此属性的更多信息请参见 错误与错误处理。
PDO::CASE_NATURAL (integer)
保留数据库驱动返回的列名。
PDO::CASE_LOWER (integer)
强制列名小写。
PDO::CASE_UPPER (integer)
强制列名大写。
PDO::NULL_NATURAL (integer)
PDO::NULL_EMPTY_STRING (integer)
PDO::NULL_TO_STRING (integer)
PDO::FETCH_ORI_NEXT (integer)
在结果集中获取下一行。仅对可滚动游标有效。
PDO::FETCH_ORI_PRIOR (integer)
在结果集中获取上一行。仅对可滚动游标有效。
PDO::FETCH_ORI_FIRST (integer)
在结果集中获取第一行。仅对可滚动游标有效。
PDO::FETCH_ORI_LAST (integer)
在结果集中获取最后一行。仅对可滚动游标有效。
PDO::FETCH_ORI_ABS (integer)
根据行号从结果集中获取需要的行。仅对可滚动游标有效。
PDO::FETCH_ORI_REL (integer)
根据当前游标位置的相对位置从结果集中获取需要的行。仅对可滚动游标有效。
PDO::CURSOR_FWDONLY (integer)
创建一个只进游标的 PDOStatement 对象。此为默认的游标选项,因为此游标最快且是 PHP 中最常用的数据访问模式。
PDO::CURSOR_SCROLL (integer)
创建一个可滚动游标的 PDOStatement 对象。通过 PDO::FETCH_ORI_* 常量来控制结果集中获取的行。
PDO::ERR_NONE (string)
对应 SQLSTATE '00000',表示 SQL 语句没有错误或警告地成功发出。当用 PDO::errorCode() 或 PDOStatement::errorCode() 来确定是否有错误发生时,此常量非常方便。在检查上述方法返回的错误状态代码时,会经常用到。
PDO::PARAM_EVT_ALLOC (integer)
分配事件
PDO::PARAM_EVT_FREE (integer)
解除分配事件
PDO::PARAM_EVT_EXEC_PRE (integer)
执行一条预处理语句之前触发事件。
PDO::PARAM_EVT_EXEC_POST (integer)
执行一条预处理语句之后触发事件。
PDO::PARAM_EVT_FETCH_PRE (integer)
从一个结果集中取出一条结果之前触发事件。
PDO::PARAM_EVT_FETCH_POST (integer)
从一个结果集中取出一条结果之后触发事件。
PDO::PARAM_EVT_NORMALIZE (integer)
在绑定参数注册允许驱动程序正常化变量名时触发事件。