LXXVIIIPostgreSQL 関数

警告

PHP 4.0.6の通知メッセージ処理にはバグがあるため、PHP 4.0.6で PostgreSQLモジュールを使用することは推奨されません。

警告

PostgreSQLの関数名は、現在のコード規約に沿うようにバージョン4.2.0 で変更されます。新しい名前の多くにはアンダースコアが追加されます。 例えば、pg_exec()からpg_query()のようにいくつかの関数は、統一性を 持たせるために異なる名前に変更されます。以前の名前は、4.2.0以降の 何回かのリリースでも使用可能ですが、将来的に削除される可能性があ ります。CVSバージョンには、新しい関数名が付けられています。

従来のpg_connect()/pg_pconnect() は、将来的に同期接続機能をサポー トするために過去のものとなる可能性があります。

Postgresは元々UCB(カリフォルニア大学バークレイ校)コンピュータ・サ イエンス学部で開発されたものです。このPostgresは、いくつかの商用デー タベースにおいてサポートされつつあるオブジェクトリレーショナルデー タベース的概念の多くの先駆けでした。PostgreSQLは、SQL92/SQL3言語サ ポート、トランザクション機能、拡張可能な型を提供しています。 PostgreSQLは、パブリック・ドメイン、オープンソースで、オリジナルの バークレイ・コードから発展してきた子孫にあたります。

PostgreSQLデータベースはオープンソースのプロダクツであり、無料で使 用可能できます。PostgreSQLサポートを使用するには、PostgreSQL 6.5以 降が必要です。PostgreSQL 7.0以降ではPostgreSQLモジュールの全ての機 能が使用可能です。PostgreSQLは、マルチバイト文字エンコーディングを 含む多くの文字エンコーディングをサポートしています。現在のバージョ ン及びPostgreSQLに関するより詳細な情報は、www.postgresqlL.orgで入手可能です。

PostgreSQLサポートを利用可能とするには、PHPコンパイル時に "--enable-pgsql[=DIR]" を指定することが必要です。共有オ ブジェクトモジュールが利用可能な場合、PostgreSQLはphp.iniの extensionまたは dl()関数を使用してロードすることが可能です。 サポートされるini命令は、配布ソースに付属するphp.ini-distファイル に記述されています。

全ての関数が全ての構築環境でサポートされるわけではありません。サポー トされる関数は、使用するlibpq(PostgreSQLのCクライアントインターフェ イス)のバージョンとlibpqのコンパイル方法に依存します。足りない関数 がある場合、libpqはその関数を必要とする機能をサポートしません。

接続するPostgreSQLサーバーよりも新しいlibpqを使用することも重要で す。使用するlibpqのバージョンがPostgreSQLサーバが期待するよりも古 い場合、問題を生じる可能性があります。

バージョン6.3(1998/3/2)以降、PostgreSQLはUNIXドメインソケットを 使用しています。これらの新しいコネクションの使用例を以下に示す表に 示します。このソケットは/tmp/.s.PGSQL.5432にあります。 このオプションはpostmasterに対して'-i'フラグを 指定することで有効となります。これは "Unixドメインソケット以外のTCP/IP ソケットもlisten する"という意味です。

表 1postmasterとPHP

postmasterPHPステータス
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.php3 on line 20.
postmaster -i &pg_connect("host=localhost dbname=MyDbName");OK

次のコマンドでも接続を確立することができます。 $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 - 環境変数)を参照下さい。

PostgreSQL 7.1.0から、textデータ型の最大サイズは1GBとなっています。 古いPostgreSQLのtextデータ型はブロックサイズ(デフォルトは8KB、最大 32KBをコンパイル時に定義可能)の制限を受けていました。

ラージオブジェクト(lo)インターフェースを使用するには、そのクエリーを トランザクション・ブロックの中に入れてやる必要があります。 トランザクション・ブロックはbeginで始まり、 そのトランザクションが有効な場合はcommitまたは endで終わります。トランザクションが失敗した場合、 そのトランザクションはrollbackまたは abortにより閉じる必要があります。

例 1ラージオブジェクトの使用例

<?php
   $database = pg_connect ("dbname=jacarta");
    pg_exec ($database, "begin");
    $oid = pg_locreate ($database);
    echo ("$oid\n");
    $handle = pg_loopen ($database, $oid, "w");
    echo ("$handle\n");
    pg_lowrite ($handle, "large object data");
    pg_loclose ($handle);
    pg_exec ($database, "commit");
?>
ラージオブジェクトリソースを閉じる前に接続リソースを閉じないように して下さい。

目次
pg_close -- PostgreSQL接続を閉じる
pg_cmdtuples -- 影響を受けたタプル(レコード)数を返す
pg_connect -- PostgreSQL接続を開く
pg_dbname -- データベース名の取得
pg_end_copy -- PostgreSQLバックエンドに同期する
pg_errormessage -- 直近のエラーメッセージ文字列を取得する
pg_exec -- クエリーを実行する
pg_fetch_array -- 行を配列として取得する
pg_fetch_object -- 行をオブジェクトとして得る
pg_fetch_row -- 数字をインデックスとする配列として行を得る
pg_FieldIsNull -- フィールドがNULLかどうか調べる
pg_fieldname -- フィールドの名前を返す
pg_fieldnum -- カラム番号を返す
pg_fieldprtlen -- 表示される長さを返す
pg_fieldsize --  指定したフィールドの内部記憶領域におけるサイズを返す
pg_fieldtype --  フィールド番号に対応する型名を返す
pg_freeresult -- メモリを開放する
pg_getlastoid -- 直近のオブジェクトIDを返す
pg_host -- ホスト名を返す
pg_last_notice --  PostgreSQLサーバからの直近の通知メッセージを返す
pg_loclose -- ラージオブジェクトをクローズする
pg_locreate -- ラージオブジェクトを生成する
pg_loexport -- ラージオブジェクトをファイルにエクスポートする
pg_loimport -- ファイルからラージオブジェクトをインポートする
pg_loopen -- ラージオブジェクトをオープンする
pg_loread -- ラージオブジェクトを読み込む
pg_loreadall --  ラージオブジェクト全体を読み込みブラウザに直接送信する
pg_lounlink -- ラージオブジェクトを削除する
pg_lowrite -- ラージオブジェクトを書く
pg_numfields -- フィールド数を返す
pg_numrows -- 行数を返す
pg_options -- 接続に関連するオプションを取得する
pg_pconnect -- 持続的なデータベース接続をオープンする
pg_port -- 接続に関連するポート番号を返す
pg_put_line --  NULLで終る文字列をPostgreSQLバックエンドに送信する
pg_result -- 結果IDから実際の値を返す
pg_set_client_encoding --  PostgreSQLクライアントのエンコーディングを設定する
pg_client_encoding --  PostgreSQLクライアントのエンコーディングを取得する
pg_trace -- PostgreSQLサーバーへの接続をトレースする
pg_tty -- tty名を返す
pg_untrace --  PostgreSQLサーバーへの接続のトレースを無効にする
pg_get_result --  Get asynchronous query result
pg_request_cancel --  Cancel request
pg_is_busy --  Get connection is busy or not
pg_send_query --  同期クエリを送信する
pg_cancel_query --  リクエストをキャンセルする
pg_connection_busy --  接続がビジーかどうかを調べる
pg_connection_reset --  接続をリセット(再接続)する
pg_connection_status --  接続ステータスを取得する
pg_copy_from --  No description given yet
pg_copy_to --  Send null-terminated string to backend server
pg_escape_bytea --  Escape binary for bytea type
pg_escape_string --  Escape string for text/char type
pg_lo_close --  Close a large object
pg_lo_seek --  Seeks position of large object
pg_lo_tell --  Returns current position of large object
pg_result_error --  Get error message associated with result
pg_result_status --  Get status of query result