PostgreSQLへ接続
PDOを利用してPostgreSQLへ接続してみます。
事前にPostgreSQLへ"uriage"と言う名前のデータベースを作成してあります。また"uriage"データベース内に"shouhin"テーブルを作成し、初期データを入れてあります。
			 
			
またこのデータベースへ接続してSQL文を発行するためのユーザーとして「pguser」というユーザーを作成しました(パスワードは「pguser」)。のユーザーに対する権限は下記のように「shouhin」テーブルに対して「SELECT」「UPDATE」「DELETE」「INSERT」の権限を与えています。
			 
			
"uriage"データベースへ接続するためのPDOクラスのオブジェクトの作成は下記のようになります。
$dsn = 'pgsql:dbname=uriage host=localhost port=5432';
$user = 'pguser';
$password = 'pguser';
try{
    $dbh = new PDO($dsn, $user, $password);
}catch (PDOException $e){
    print('Error:'.$e->getMessage());
    die();
}
では実際に試してみます。下記ではデータベースへ接続後にテーブルの中身を表示させています(詳しくは別のページで確認します)。
<html>
<head><title>PHP TEST</title></head>
<body>
<?php
function convert_enc($str){
    $from_enc = 'EUC_JP';
    $to_enc = 'SJIS';
    return mb_convert_encoding($str, $to_enc, $from_enc);
}
$dsn = 'pgsql:dbname=uriage host=localhost port=5432';
$user = 'pguser';
$password = 'pguser';
try{
    $dbh = new PDO($dsn, $user, $password);
    print('接続に成功しました。<br>');
    $sql = 'select * from shouhin';
    foreach ($dbh->query($sql) as $row) {
        print(convert_enc($row['id']));
        print(convert_enc($row['name']).'<br>');
    }
}catch (PDOException $e){
    print('Error:'.$e->getMessage());
    die();
}
$dbh = null;
?>
</body>
</html>
※PDOを利用する場合に、pg_set_client_encoding()に相当する機能をどう実現すればいいか分からなかったので、データベースから返されてきた値をmb_convert_encoding関数を使って文字コードの変換を行っています。
上記ファイルをWWWサーバに設置しブラウザ経由で見ると下記のように表示されます。
			 
			
( Written by Tatsuo Ikura )
 
				著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。
