PDO::__construct
(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)
PDO::__construct — データベースへの接続を表す PDO インスタンスを生成する
説明
public PDO::__construct
( string $dsn
[, string $username
[, string $passwd
[, array $options
]]] )
指定されたデータベースへの接続を表す PDO インスタンスを生成します。
パラメータ
- dsn
データソース名(Data Source Name)またはDSN。データベースに接続するために 必要な情報が含まれます。
一般に、DSNはPDOドライバ名の後にコロンが続き、 各PDOドライバに固有の接続構文が続きます。より多くの情報は PDO driver-specific documentation にあります。
dsn
パラメータは、データベースへの接続を生成する ために必要な引数を指定する方法として、3種類の方法をサポートします。- ドライバ呼び出し
dsn
に完全な DSN を指定します。- URI 呼び出し
dsn
は、uri:
の後に DSN 文字列を含むファイルの位置を定義する URI が続く形式となります。 この URI には、ローカルファイルまたはリモート URL を指定することができます。uri:file:///path/to/dsnfile
- エイリアス
dsn
は、DSN 文字列を定義するphp.ini
のpdo.dsn.name
へマップする名前name
からなります。注意:
エイリアスは、
.htaccess
やhttpd.conf
ではなく、php.ini
で定義する必要があります。
- username
DSN 文字列のユーザー名。このパラメータは、いくつかの PDO ドライバではオプションです。
- passwd
パスワード。DSN 文字列で必要とされる場合に指定。
- options
ドライバ固有の接続オプションを指定するキー=> 値の配列。
返り値
成功時に PDO オブジェクトを返します。
例
例1 ドライバ呼び出しにより PDO インスタンスを生成する
<?php/* ドライバ呼び出しを使用して MySQL データベースに接続する */$dsn = 'mysql:dbname=testdb;host=127.0.0.1';$user = 'dbuser';$password = 'dbpass';try { $dbh = new PDO($dsn, $user, $password);} catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage();}?>
例2 URI 呼び出しにより PDO インスタンスを生成する
以下の例では、ファイル /usr/local/dbconnect
が存在し、
PHP がこのファイルを読み込む権限を有していることを仮定します。
このファイルには、 PDO_ODBC により DB2 データベースに接続するための PDO DSN
が含まれています。
odbc:DSN=SAMPLE;UID=john;PWD=mypass
これにより、PHP スクリプトでは、単に uri:
パラメータを渡し、
ファイルの URI を示すだけでデータベース接続を作成することができるようになります。
<?php/* ドライバ呼び出しを使用して ODBC データベースに接続する */$dsn = 'uri:file:///usr/local/dbconnect';$user = ;$password = ;try { $dbh = new PDO($dsn, $user, $password);} catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage();}?>
例3 エイリアスにより PDO インスタンスを生成する
以下の例では、php.ini
にエイリアス mydb
のみで
MySQL データベースに接続できるようにするための以下のエントリが含まれることを
仮定します。
[PDO] pdo.dsn.mydb="mysql:dbname=testdb;host=localhost"
<?php/* エイリアスを使用して ODBC データベースに接続する */$dsn = 'mydb';$user = ;$password = ;try { $dbh = new PDO($dsn, $user, $password);} catch (PDOException $e) { echo '接続に失敗しました: ' . $e->getMessage();}?>