PHPマニュアル/PEARマニュアル | ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot

DSN | JavaScript入門&応用&リファレンスなら「JavaScriptist」

  

DSN

DSN – データソース名 (Data Source Name)

Description

PEAR::MDB2 でデータベースに接続するには、正しい DSN を作成しなければなりません。 この DSN は、以下のパーツから構成されています。

  • phptype: PHP で使用するデータベースバックエンド (例えば mysqlpgsql など)
  • dbsyntax: データベースで使用する SQL の構文など
  • protocol: 使用する通信プロトコル (例えば tcpunix など)
  • hostspec: ホストの指定 (hostname[:port])
  • database: DBMS サーバ上で使用するデータベース
  • username: ログイン時のユーザ名
  • password: ログイン時のパスワード
  • proto_opts: おそらく protocol と組み合わせて使用する
  • option: 追加の接続オプションを、URI クエリ文字列形式で指定する。 複数存在する場合は & で連結する。以下の表は、 オプションの一部を示したものです。

オプションの一覧
名前 説明
charset クライアントの文字セットを指定できるバックエンドもあります (setCharset(string $charset, [resource $connection = null]) を実行します)。 string
new_link [boolean] 同じホストから複数回の接続があった場合に、新しい接続を作成しない RDBMS があります。このオプションを TRUE にすると、 そのような場合に強制的に新しい接続を作成しようとします。 boolean

DSN は、連想配列あるいは文字列のいずれかの形式で指定することができます。 配列形式を推奨します。というのも、そうすれば余計なパース処理が不要となるからです (接続 の例を参照ください)。 文字列形式で示した DSN は次のようになります。

phptype(dbsyntax)://username:password@protocol+hostspec/database?option=value

さまざまな変化形があります。

phptype://username:password@protocol+hostspec:110//usr/db_file.db
phptype://username:password@hostspec/database
phptype://username:password@hostspec
phptype://username@hostspec
phptype://hostspec/database
phptype://hostspec
phptype:///database
phptype:///database?option=value&anotheroption=anothervalue
phptype(dbsyntax)
phptype

現在サポートしているデータベースバックエンドは次のとおりです。

fbsql  -> FrontBase
ibase  -> InterBase / Firebird (PHP 5 が必要です)
mssql  -> Microsoft SQL Server (Sybase 用ではありません。PHP を --with-mssql でコンパイルします)
mysql  -> MySQL
mysqli -> MySQL (新しい認証プロトコルをサポートしています) (PHP 5 が必要です)
oci8   -> Oracle 7/8/9/10
pgsql  -> PostgreSQL
querysim -> QuerySim
sqlite -> SQLite 2

このような DSN の書式もサポートしています。

phptype(syntax)://user:pass@protocol(proto_opts)/database

databaseoption の値、 username あるいは password に DSN の区切り文字として使用する文字が含まれている場合は、 それを URI の十六進エンコーディング方式でエスケープします。

: = %3a   / = %2f   @ = %40
+ = %2b   ( = %28   ) = %29
? = %3f   = = %3d   & = %26

中には、すべてのデータベースバックエンドがサポートしているわけではない 機能もあることに注意しましょう。

Example

ソケットを使用したデータベースへの接続

mysql://user@unix(/path/to/socket)/pear

標準以外のポートを使用したデータベースへの接続

pgsql://user:pass@tcp(localhost:5555)/pear

Unix マシン上の SQLite への、オプションを使用した接続

sqlite:////full/unix/path/to/file.db?mode=0666

Windows マシン上の SQLite への、オプションを使用した接続

sqlite:///c:/full/windows/path/to/file.db?mode=0666

SSL を使用した MySQLi での接続

mysqli://user:pass@localhost/pear?key=client-key.pem&cert=client-cert.pem

サービス名を使用した Oracle への接続

oci8://username:password@foo.example.com[:port]/?service=service

"Easy Connect" 方式での Oracle への接続

username/password@[//]host[:port][/service_name]
忘却曲線を使ってこの知識を確実に記憶に残す

フォーラムで「DSN」について話す
各種マニュアル: PHPマニュアル | PEARマニュアル | Smarty(英語)マニュアル | PHP-GTKマニュアル | DSN」をGoogle検索
copyright © 1997-2024 PHP ドキュメント作成グループ(ライセンス). provided by php spot. マニュアル: