データベースに接続する

 PDOを使ってデータベースに接続する方法を詳しく見てみましょう。PDOとPHPのプログラムは次のような関係で動作しています。

PDOとPHPプログラムのイメージ
PDOとPHPプログラムのイメージ

 データベースに接続するにはPDOクラスのオブジェクトを使用します。インスタンス生成時に接続文字列、ユーザー名、パスワードをパラメーターにセットして接続します。データベースを利用し終わったら、PDOオブジェクトが格納されている変数にnullをセットすることで、明示的にデータベースへの接続を閉じることができます。

クラス名 PDO
コンストラクター __construct
パラメーターリスト
パラメター名 説明
string $dsn データソース名(Data Source Name)
string $username データベースに接続するユーザー名
string $password データベースに接続するパスワード
コンストラクターの仕様

 データソース名は次のような構成で指定します。

要素 内容
DSN接頭辞 mysql:
host データベースサーバーのホスト名
port データベースサーバーの公開ポート番号
dbname データベース名
charset 使用する文字コード
DSNの構成内容

指定例:

mysql:host=localhost;dbname=books;charset=utf8;

○ ファイル

 次のPHPファイルをプロジェクトに追加してください。

ファイルの種類 PHPファイル
ファイル名 ConnectionTest.php

サンプルダウンロード

○ プログラム

 次のようにプログラムを記述してください。

ConnectionTest.php

  1. <?php
  2. $host = 'localhost'; //データベースサーバー名
  3. $dbname = 'books'; //データベース名
  4. $username = 'root'; //データベースユーザー名
  5. $password = ''; //パスワード
  6. ?>
  7. <!DOCTYPE html>
  8. <html lang="ja">
  9.  <meta charset="utf-8">
  10.  <head>
  11.   <title>データベース接続</title>
  12.  </head>
  13.  <body>
  14. <?php
  15. try{
  16.  //データベースに接続する
  17.  $pdo = new PDO('mysql:host=' . $host . ';dbname=' . $dbname .';charset=utf8;',
  18.   $username,
  19.   $password);
  20.  print('データベースに接続しました。');
  21. }catch(PDOException $e){
  22.  print($e -> getMessage());
  23. }
  24. //データベースを閉じる
  25. $pdo = null;
  26. ?>
  27.  </body>
  28. </html>

○ 実行結果

実行結果
実行結果

○ 解説

 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

  1. <?php
  2. $host = 'localhost'; //データベースサーバー名
  3. $dbname = 'phpdatabase'; //データベース名
  4. $username = 'root'; //データベースユーザー名
  5. $password = ''; //パスワード
  6. ?>

○ 実行結果

実行結果
実行結果

○ 解説

 3行目のデータベース名を、今回の実行環境では存在しないデータベース名に変更しました。実行すると、接続できないため例外がスローされます。実行結果にあるように、「phpdatabase」というデータベースが見つからないというエラーが表示されます。

前へ   次へ