PEAR::MDB2 でデータベースに接続するには、正しい DSN を作成しなければなりません。 この DSN は、以下のパーツから構成されています。
phptype
:
PHP で使用するデータベースバックエンド (例えば mysql
や pgsql
など)
dbsyntax
:
データベースで使用する SQL の構文など
protocol
:
使用する通信プロトコル (例えば tcp
や unix
など)
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
database
、option
の値、
username
あるいは password
に DSN の区切り文字として使用する文字が含まれている場合は、
それを URI の十六進エンコーディング方式でエスケープします。
: = %3a / = %2f @ = %40 + = %2b ( = %28 ) = %29 ? = %3f = = %3d & = %26
中には、すべてのデータベースバックエンドがサポートしているわけではない 機能もあることに注意しましょう。
ソケットを使用したデータベースへの接続
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:[email protected][:port]/?service=service
"Easy Connect" 方式での Oracle への接続
username/password@[//]host[:port][/service_name]