PDOでデータベースへ接続する方法

こんにちは!ぐちです。

PDO

PDOとは「PHP Data Objects」の略でどのデータベースを使っているかを隠蔽してくれるものです。PDOを使うことでどのデータベースを利用する場合でも同じ関数を使うことができますので将来データベースを変更することがあってもPDOオブジェクトを作成する際に指定するパラメータを変更すればよいだけにすることができます。PDOはPHP5.1以降で利用できるようになっています。

DSN

データベースへ接続する際の情報(DataSourceName)を指定します。

MySQL

MySQLへ接続する際のDSNは下記の通りです。

mysql:dbname=db_name;host=host_name;port=port_no

PostgreSQL

PostgreSQLへ接続する際のDSNは下記の通りです。

pgsql:dbname=db_name;host=host_name;port=port_no

見ての通り先頭のデータベース名が違うだけ他は同じ書式となります。

PDOオブジェクト

下記のようにDSNとユーザー名とパスワードを指定してPDOオブジェクトを作成します。

$dsn = 'mysql:dbname=db_name;host=host_name;port=port_no';
$user = 'dbuser';
$password = 'dbpass';

$dbh = new PDO($dsn, $user, $password);

PDOオブジェクトを作成する際はデータベースへの接続に失敗した場合に備えてtry catchで「PDOException」を例外処理しておきます。

$dsn = 'mysql:dbname=testdb;host=localhost';
$user = 'dbuser';
$password = 'dbpass';

try{
        $dbh = new PDO($dsn, $user, $password);
    }catch (PDOException $e){
        print('Connection failed:'.$e->getMessage());
        die();
}

検索する

SQLクエリを実行する場合には下記のようにします。

$sql = 'select * from table_name';
$stmt = $dbh->query($sql);

その他クエリ

もちろん他にも挿入や更新、削除などがprepareメソッドとexecuteメソッドを使い実行することができます。各データベースへの差分を吸収してくれるPDOを便利に使いこなしましょう。