PHP Data Object(PDO)拡張モジュールの導入とPDOインスタンスの作成 第1回
PHP Data Objects (PDO) は、PHPの拡張モジュールで、 データベースにアクセスするための インターフェイスです。
今回は、PDOを導入し、さらにPDOを利用するためにPDOインスタンスを作成します。
PDOの便利なところ
- プリペアステートメントを使うことができます。
- トランザクションを利用することができます。(データベースでトランザクションを利用することができる場合)
- 外部ライブラリを必要としません。php.iniを編集すれば導入できます。
データベース固有の PDOドライバを使用します。それぞれのデータベースのPDOドライバの詳細は、PHP: PDO ドライバ - Manual をご覧ください。
1.PDOを導入
PHPに同梱されているデータベース固有のDLLを使うため、php.iniを編集してPHPを再起動します。
- データベース固有のDLLを指定するため、php.iniで、「extension=php_pdo_xxxxxx.dll」を指定します。(xxxxxxはデータベースにより異なります)
- php.iniを保存し、その後、PHPを再起動します。
php.iniで、行頭の「;」に引き続きDLLがすでに記述されている場合があります。行頭の「;」はコメントマークですので、行頭の「;」を削除します。
(例)MySQLの場合「;extension=php_pdo_mysql.dll」と記述されているので、行頭の「;」を削除するだけです。
- DLLファイルは、php.iniの extension_dir で指定したディレクトリに格納されている必要があります。
- PHP 5.3 より前のバージョンでは、「extension=php_pdo.dll」を指定する必要があるそうです。さらに、データベース固有のDLLは、上記の指定に引き続いて指定する必要があるそうです。
2.PDO インスタンスの作成
PDOを利用するため、はじめにPDOインスタンスを作成します。
データベースのDNS、ユーザー、パスワードをPDOクラスのコンストラクタに渡して、PDOインスタンスを作成します。
PDOインスタンスの作成方法を2種類書きます。データベースのDNS、ユーザー、パスワードは、ご利用環境に合わせてください。
1.PHPスクリプトでDNSを指定する場合
$dsn = 'mysql:dbname=testdb;host=testhost';
$user = 'testuser';
$password = 'testpass';
$dbh = new PDO($dsn, $user, $password);
2.php.iniのエイリアスでDNSを指定する場合
php.iniの[PDO]に下の行を追加し保存しました。
pdo.dsn.testdsn="mysql:dbname=testdb;host=testhost"
※ $dsnの値は「pdo.dns.xxxxxx="mysql:dbname・・・"」の「xxxxxx」部分となります。
$dsn = 'testdsn';
$user = 'testuser';
$password = 'testpass';
$dbh = new PDO($dsn, $user, $password);
$dnsの値を誤って指定すると「invalid data source name」エラーが発生しました。
プリペアステートメントの使用については、
PHP Data Object (PDO)でプリペアステートメントを使う 第2回 - プログラミングノート をご覧ください。
トランザクションの利用については、PHP Data Object (PDO)でトランザクションを利用する 第3回 - プログラミングノート をご覧ください。
記事一覧
第1回 PHP Data Object(PDO)拡張モジュールの導入とPDOインスタンスの作成
第2回 PHP Data Object (PDO)でプリペアステートメントを使う
第3回 PHP Data Object(PDO)でトランザクションを利用する