TOP書籍連動> 設定可能な属性
PDOの紹介
PDOの紹介

第2回:クエリの実行

著者:Ilia Alshanetsky   2005/12/14
前のページ  1  2   3  次のページ
設定可能な属性

   PDOで設定可能な属性は主に3つの分野に分かれます。1つ目は「接続時のみ」の属性です。これはデータベース接続時のエラーを検出する場合に指定します。

   PDO_ATTR_TIMEOUTはPDOがデータベースシステムからのレスポンスを待つ最大の秒数を定義し、PDO_ATTR_PERSISTENTは持続的接続を使用するかどうかを設定するために使用します。

   ネイティブなドライバとは違い、PDOは接続命令を扱うために切り離されたドライバを必要としません。

new PDO($dsn, $login, $pass,array(PDO_ATTR_TIMEOUT=>5,PDO_ATTR_PERSISTENT=>1));

   PDOにおける持続的接続の実装には追加機能があります。一見不便そうですが、実は非常に使いやすいものになっています。この機能は、開発者が文字列を指定して、持続接続に命名できるというものです。

   この機能によって、識別可能な複数の持続接続をひとつのスクリプト内に同時に存在させることができます。

new PDO($dsn, $login, $pass,array(PDO_ATTR_PERSISTENT=>"con2"));

   先ほど紹介したPDO_ATTR_ERRMODEと同じようにカラム名を定義するPDO_ATTR_CASEのように、すべてのPDOドライバにサポートされている、ある標準の設定があります。製作者は検索したレコードのデータが連想配列に入るタイミングやカラム名に基づいたキーを確実に予測することができます。

   データベースシステムが違うとカラム名の扱いに関するルールも変わるので、正確にデータベースの挙動を制御するためにはこれらを標準化することが必要です。

   最後のクラスは、ある特定のデータベースの設定オプションのために用意されたクラスです。多くの場合、これは以前はPDOを通すか、限定のネイティブドライバで対応してこのデータベース固有の機能を公開していました。

   1つは、長ったらしい名前のPDO_MYSQL_ATTR_USE_BUFFERED_QUERYで、これはMySQLドライバでバッファされたクエリの使用を可能にするものです。標準ではMySQLドライバはアンバッファードクエリを使用します。これはメモリの効率で優れていますが、同じタイミングで複数のクエリの結果を返すことができません。

   このクラスの属性はそれらの名前がデータベース名を含んでいるかどうかを見てチェックすることで、常に見分けることができます。

   属性を設定することができるのと同様に、ロジックで現在の設定値を取得することもできます。PDOでは、getAttribute()メソッドを使用することで設定された値を取得します。

   さらに、この機能は現在使用しているデータベースの情報を取り出すこともできます。例えば、PDO_ATTR_SERVER_INFO属性は現在接続しているサーバの情報を取り出し、PDO_ATTR_SERVER_VERSIONはサーバのバージョン情報を「4.1.11-max for MySQL」のように文字列で返します。他に便利なものとしては、接続状況を取り出すことができるPDO_ATTR_CONNECTION_STATUSがあります。

   この特有の属性は、活動していない時間に応じてタイムアウトをするなど、持続接続が使用されているインスタンスにおいて特に役に立ちます。この属性を使うことで、PDOによって取得した持続接続が使用可能かどうかを簡単に決定することができます。


前のページ  1  2   3  次のページ


Ilia Alshanetsky
著者プロフィール
Ilia Alshanetsky
PHP開発チームの活動メンバーの1人であり、現在のPHP 4.3.X.のリリースマネージャー。また、オープンソース掲示板FUDフォーラム(http://fud.prohost.org/forum/)をはじめとする数多くのプロジェクトにも貢献している。


INDEX
第2回:クエリの実行
  クエリの実行
設定可能な属性
  INSERTしたIDの取得