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 )
PHPBook