@ PHP

CRUD:データベースの作成と接続

データベースへのアクセスには PDO を使います。

PDO(PHP Data Object)とは、PHP標準(5.1.0以降)のデータベース接続クラスのことです。

PHP では MySQL や PostgreSQL などさまざまなデータベースを利用することが可能です。しかし、MySQL であれば mysqli_query() メソッド、 PostgreSQL であれば pg_query() メソッドのように、それぞれのデータベースごとに別々のメソッドを使う必要がありました。そこで、これらのデータベースへのアクセスを抽象化し、同じインターフェースで扱えるようにしたのが PDO です。

PDO を利用して CRUD を作成してみます。

ディレクトリ構成は次のようにします。

/shop
├── dbconnect.php
├── functions.php
├── validate.php
├── index.php
├── add.php
├── edit.php
├── index.php
└── style.css

データベースの作成

phpMyAdmin などを利用して、以下のデータベースを作成します。

  • データベース名:shop
  • 照合順序:utf8_general_ci

データベース接続ファイルの作成

PDO クラスを使ってデータベースに接続するためのファイルは次のようになります。

dbconnect.php

<?php

try {  // [3 start]
    $dbh = new PDO(  // [1]
        'mysql:host=localhost; dbname=shop; charset=utf8',
        'user',
        'password'
    );
} catch (PDOException $e) {
    exit('ERR! : ' . $e->getMessage());
} finally {
    $dbh = null;  // [2]
}  // [3 end]

[1] 接続

データベースへの接続を管理するのは、PDO クラスの役割です。まず、PDO クラスをインスタンス化しておきます。

$dbh = new PDO(  // [1]
    'mysql:host=localhost; dbname=shop; charset=utf8',
    'user',
    'password'
);

[2] 切断

接続を切断するために、オブジェクト変数 $dbh に NULL をセットして、PDO オブジェクトを破棄します。

$dbh = null;  // [2]

[3] データベースに接続できなかった場合の例外処理

例外とは、アプリケーションの実行時に発生する異常な状態、エラーのことです。データベースに接続しようとしたら、データベースサーバが見つからなかった、アクセス権限がなっかた、など例外の発生原因にはさまざまなものがあります。

例外処理には、try ~ chatch ~ finally 命令を使います。

example.php

try {  // [3 start]
    // 例外が発生する可能性があるコード
} catch( 発生するかもしれない例外の種類 例外を受け取る変数) {
    // 例外発生時の処理
} finally {
    // 例外の有無にかかわらず実行されるコード
}  // [3 end]