エントリー

WindowsのXAMPPにPostgreSQLを導入するメモ

PostgreSQLを導入してみたので、忘れないうちにメモ。

主な参考サイト

トラブル

PHPからPostgreSQLに接続する際、以下のようなエラーになった。

Call to undefined function pg_connect()

php.iniphp_pdo_pgsql.dllphp_pgsql.dll を有効にする必要がある。それでもダメなら、Windowsの環境変数にPHPへのパス(C:\xampp\php など)を書き込めば回避できるみたい。

コマンドプロンプトからの操作例

#ユーザー名を指定してPostgreSQLにログイン
psql -U postgres

#ユーザー名とデータベースを指定してPostgreSQLにログイン
psql -U postgres -d test

#データベース作成
CREATE DATABASE test;

#データベース一覧
¥l

#データベース選択
¥c test

#テーブル作成
CREATE TABLE sample1(
  id   integer,
  name text
);

#テーブル一覧
\dt

#テーブル定義確認
\d sample1

#SQLを発行
INSERT INTO sample1 VALUES(2, 'test2');
SELECT * FROM sample1;

PHPからの、pg_connect()での接続例

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>テスト</title>
</head>
<body>
<?php

$con = pg_connect('host=localhost dbname=test user=postgres password=1234');
if (!$con) {
  exit('データベースに接続できませんでした。');
}

$result = pg_query($con, 'SELECT * FROM sample1');
while ($data = pg_fetch_array($result)) {
  echo '<p>' . $data['id'] . ':' . $data['name'] . "</p>\n";
}

$con = pg_close($con);
if (!$con) {
  exit('データベースとの接続を閉じられませんでした。');
}

?>
</body>
</html>

PHPからの、PDOでの接続例

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>テスト</title>
</head>
<body>
<?php

try {
  $pdo = new PDO('pgsql:dbname=test;host=localhost', 'postgres', '1234');
} catch (PDOException $e) {
  exit('データベースに接続できませんでした。' . $e->getMessage());
}

$stmt = $pdo->query('SELECT * FROM sample1');
if (!$stmt) {
  $info = $pdo->errorInfo();

  exit($info[2]);
}

while ($data = $stmt->fetch(PDO::FETCH_ASSOC)) {
  echo '<p>' . $data['id'] . ':' . $data['name'] . "</p>\n";
}

$pdo = null;

?>
</body>
</html>

ページ移動

ユーティリティ

カテゴリー

検索

エントリー検索フォーム
キーワード

過去ログ

過去ログ表示フォーム
キーワード

Feed