PostgreSQL 関数 PostgreSQL
&reftitle.intro; PostgreSQL データベースはオープンソースのプロダクツであり、無料で 使用可能です。Postgres は元々 UCB(カリフォルニア大学バークレイ校) コンピュータ・サイエンス学部で開発されたものです。この Postgres は、 現在いくつかの商用データベースにおいてサポートされつつある オブジェクトリレーショナルデータベース的概念の多くの先駆けでした。 Postgres は、SQL92/SQL99 言語サポート・トランザクション・参照整合性・ ストアドプロシージャ・拡張可能な型を提供しています。PostgreSQLは、 バークレイ校での Postgres のオリジナルコードの、オープンソースの 子孫にあたります。
&reftitle.required; PostgreSQL サポートを使用するには、PostgreSQL 6.5 以降が必要です。 PostgreSQL 8.0 以降では PostgreSQL モジュールの全ての機能を使用可能 です。PostgreSQL は、マルチバイト文字エンコーディングを含む多くの 文字エンコーディングをサポートしています。現在のバージョン及び PostgreSQLに関するより詳細な情報は、 &url.pgsql;PostgreSQL Documentation で入手可能です。
&reference.pgsql.configure; &reference.pgsql.ini;
使用法およびヒント 通知メッセージを処理するコードにバグがあるため、PHP 4.0.6 で PostgreSQL モジュールを使用することは推奨されません。 4.1.0 以降を使用してください。 PostgreSQL モジュールの関数名は、現在のコーディング標準に準拠する ために 4.2.0 以降で変更されました。新しい関数名のほとんどには、 pg_lo_open() のようにアンダースコアが付きます。 いくつかの関数は、pg_exec() から pg_query() というように、統一を とるために関数名が変更されます。 古い名前も 4.2.0 とそれに続くいくつかのバージョンで使用可能ですが、 将来的には削除される可能性があります。 変更された関数名 古い関数名 新しい関数名 pg_cmdtuples pg_affected_rows pg_errormessage pg_last_error pg_exec pg_query pg_fieldname pg_field_name pg_fieldsize pg_field_size pg_fieldnum pg_field_num pg_fieldprtlen pg_field_prtlen pg_fieldisnull pg_field_is_null pg_freeresult pg_free_result pg_getlastoid pg_last_oid pg_loreadall pg_lo_read_all pg_locreate pg_lo_create pg_lounlink pg_lo_unlink pg_loopen pg_lo_open pg_loclose pg_lo_close pg_loread pg_lo_read pg_lowrite pg_lo_write pg_loimport pg_lo_import pg_loexport pg_lo_export pg_numrows pg_num_rows pg_numfields pg_num_fields pg_result pg_fetch_result
従来の pg_connect/pg_pconnect 構文は、将来的に非同期接続 機能をサポートするために過去のものとなる可能性があります。 pg_connectpg_pconnect では、接続文字列を使用してください。
全ての関数が全ての構築環境でサポートされるわけではありません。 サポートされる関数は、使用する libpq(PostgreSQL の C クライアント インターフェイス) のバージョンと libpq のコンパイル方法に依存します。 足りない関数がある場合、libpq はその関数を必要とする機能を サポートしません。 接続する PostgreSQL サーバよりも新しい libpq を使用することも 重要です。使用する libpq のバージョンが PostgreSQL サーバが期待するよりも 古い場合、問題を生じる可能性があります。 バージョン 6.3(1998/3/2) 以降、PostgreSQL は UNIX ドメインソケットを 使用しています。TCP ポートをオープンしておく必要はありません。 これらの新しいコネクションの使用例を以下に示す表に 示します。このソケットは /tmp/.s.PGSQL.5432 に あります。このオプションは postmaster に対して'- i' フラグを指定することで有効となります。これは "Unix ドメイン のほかにソケット以外の TCP/IP ソケットもlisten する"という意味です。 Postmaster と PHP Postmaster PHP ステータス postmaster & pg_connect("dbname=MyDbName"); OK postmaster -i & pg_connect("dbname=MyDbName"); OK postmaster & pg_connect("host=localhost dbname=MyDbName"); Unable to connect to PostgreSQL server: connectDB() failed: Is the postmaster running and accepting TCP/IP (with -i) connection at 'localhost' on port '5432'? in /path/to/file.php on line 20. postmaster -i & pg_connect("host=localhost dbname=MyDbName"); OK
PostgreSQL サーバへの接続は、以下のようにコマンド文字列の中に 値の組を羅列することにより、確立することができます。 $conn = pg_connect("host=myHost port=myPort tty=myTTY options=myOptions dbname=myDB user=myUser password=myPassword"); 以前の構文: $conn = pg_connect ("host", "port", "options", "tty", "dbname") は古い構文であり、推奨されません。 環境変数は、PostgreSQL サーバ/クライアントの動作に影響を与えます。 例えば、PostgreSQL モジュールは、ホスト名が接続文字列で省略された 場合、環境変数 PGHOST を探します。サポートされる環境変数は、バージョン 毎に異なります。詳細は、PostgreSQL プログラマ用マニュアル(libpq - 環境変数)を参照ください。 適切なユーザ用に環境変数が設定されていることを確認してください。 カレントのプロセスで利用可能な環境変数を確認するには、 $_ENV または getenv を使用してください。 デフォルトのパラメータを設定する PostgreSQL は、識別子(例: テーブル名・カラム名)を自動的に小文字に 変換します。大文字として認識させるには、識別子を常にクォートする 必要があります。
&reference.pgsql.constants;
&reftitle.examples; PostgreSQL 7.1.0 から、text データ型の最大サイズは 1GB となっています。 古い PostgreSQL の text データ型はブロックサイズ(デフォルトは 8KB、最大 32KB をコンパイル時に定義可能)の制限を受けていました。 ラージオブジェクト(lo)インターフェースを使用するには、そのクエリーを トランザクション・ブロックの中に入れてやる必要があります。 トランザクション・ブロックは BEGIN で始まり、 そのトランザクションが有効な場合は COMMIT または END で終わります。トランザクションが失敗した場合、 そのトランザクションは ROLLBACK または ABORT により閉じる必要があります。 ラージオブジェクトの使用例 ]]> ラージオブジェクトリソースを閉じる前に PostgreSQL サーバへの接続を 閉じないようにしてください。
&reference.pgsql.functions;