[PHP-users 21183]Re: pgsqlconnectエラー

KOYAMA Tetsuji koyama @ hoge.org
2004年 4月 8日 (木) 13:15:00 JST


 小山です。
At 2004年4月08日 12:40:09 +0900 (JST),
Tatsuo Ishii wrote:
> > まぁ、DSN はいろいろな要求を受け入れた結果文法が肥大しているのは確か
> > ですねぇ。
> > 
> > DB::connect() に渡す DSN は文字列だけではなく、連想配列も可能なので
> > 
> > 	$dsn = array(
> > 		'phptype' => 'pgsql',
> > 		'dbsyntax' => 'pgsql',
> > 		'username' => 'www',
> > 		'protocol' => 'unix',
> > 		'database' => 'test_db',
> > 	);
> > 
> > なんて書くと、DB::parseDSN() の妙ちくりんな解釈に悩まされずにすみま
> > す。:-)
>> おお,なるほど.
>> ただ,これでポート番号はどうやって指定するのでしょう?

 上記の例では protocol が unix なのでポート番号を指定する必要はありま
せんよね。
 汎用的な話ならば、DB::parseDSN() の先頭に以下のように書かれています
ので、これの自分で必要な部分を埋めた配列を作ればよいです。
 $parsed = array(
 'phptype' => false,
 'dbsyntax' => false,
 'username' => false,
 'password' => false,
 'protocol' => false,
 'hostspec' => false,
 'port' => false,
 'socket' => false,
 'database' => false,
 );
 DB::parseDSN() の役目は、DSN 文字列を解析して上記連想配列に値を格納
することです。最初から配列を渡してやれば、解析処理が省かれるし、思うよ
うに値がセットされて悩むこともないです。
-- 
	小山 哲志@ビート・クラフト
	koyama @ beatcraft.com
	koyama @ hoge.org


PHP-users メーリングリストの案内

AltStyle によって変換されたページ (->オリジナル) /