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 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。