PDOを使ってデータベースに接続する方法を詳しく見てみましょう。PDOとPHPのプログラムは次のような関係で動作しています。
データベースに接続するにはPDOクラスのオブジェクトを使用します。インスタンス生成時に接続文字列、ユーザー名、パスワードをパラメーターにセットして接続します。データベースを利用し終わったら、PDOオブジェクトが格納されている変数にnullをセットすることで、明示的にデータベースへの接続を閉じることができます。
クラス名 | PDO |
---|---|
コンストラクター | __construct |
パラメーターリスト | |
パラメター名 | 説明 |
string $dsn | データソース名(Data Source Name) |
string $username | データベースに接続するユーザー名 |
string $password | データベースに接続するパスワード |
データソース名は次のような構成で指定します。
要素 | 内容 |
---|---|
DSN接頭辞 | mysql: |
host | データベースサーバーのホスト名 |
port | データベースサーバーの公開ポート番号 |
dbname | データベース名 |
charset | 使用する文字コード |
指定例:
mysql:host=localhost;dbname=books;charset=utf8;
○ ファイル
次のPHPファイルをプロジェクトに追加してください。
ファイルの種類 | PHPファイル |
---|---|
ファイル名 | ConnectionTest.php |
○ プログラム
次のようにプログラムを記述してください。
ConnectionTest.php
○ 実行結果
○ 解説
2~5行目で、DSNで指定するデータベースの設定内容をセットしています。2行目の「localhost」はPHPを実行しているコンピューターを指します。ここは、データベースが稼働しているコンピューターのIPアドレスやドメイン名を指定することができます。3行目の「books」は、前章で作成したデータベースを指定しています。4、5行目はデータベースに設定されているユーザー名、パスワードを指定します。今回の環境ではユーザー名に「root」、パスワードは設定されていないため、プログラムのように指定しています。
15行目からtry文が指定されています。この中にデータベース接続や、データベース操作のプログラムを記述します。何らかの原因でデータベースに接続できなかったり、データベース操作の結果エラーが発生したりしたら、catch文で後処理をすることができます。そのような場合、「PDOException」オブジェクトがスローされるので、21行目のcatch文でそのクラス型の変数を指定しています。22行目で例外の内容を画面に表示しています。
17行目はデータベースに接続しています。PDOクラスのオブジェクトを生成することでデータベースに接続します。このオブジェクトは、データベースの接続を表すオブジェクトで、このオブジェクトを使ってSQL文を実行してデータベースを操作します。
26行目ではPDOオブジェクト変数に「null」をセットしています。これによりPDOオブジェクトは参照されなくなるため、データベースが切断され、プログラムから利用できなくなります。
ではもし、今回のプログラムでデータベース名を存在しないものにしたらどうなるか確認しましょう。
○ ファイル
「Connection.php」ファイルをコピーして次の名前のファイルを作成してください。
ファイルの種類 | PHPファイル |
---|---|
ファイル名 | NotConnection.php |
○ プログラム
次のようにプログラムを変更してください。
NotConnection.php
○ 実行結果
○ 解説
3行目のデータベース名を、今回の実行環境では存在しないデータベース名に変更しました。実行すると、接続できないため例外がスローされます。実行結果にあるように、「phpdatabase」というデータベースが見つからないというエラーが表示されます。