[PHP-users 21183]Re: pgsqlconnectエラー
KOYAMA Tetsuji
koyama @ hoge.org
2004年 4月 8日 (木) 13:15:00 JST
小山です。
At Thu, 08 Apr 2004 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 メーリングリストの案内