Forum und email

Ingres II 関数

導入

以下の関数により、Ingres II データベースサーバにアクセスできるように なります。

注意: 既に他のデータベースサーバにアクセスするための PHP 拡張モジュールを 使用している場合、Ingres は同一のコネクションについて複数のクエリや トランザクションの並列実行ができない、つまり、この拡張モジュールに おいて結果およびトランザクションのハンドルを得ることができないことに 注意する必要があります。クエリの結果は、別のクエリを送信する前に 処理する必要があり、トランザクションは別のトランザクションを オープンする前にコミットまたはロールバックする必要があります (これは、最初のクエリを送信する際に自動的に行われます)。

要件

Ingres サポートを有効にして PHP をコンパイルするには、 Ingres OpenAPI ライブラリとヘッダファイルが必要です。

インストール手順

この » PECL 拡張 モジュールは PHP にバンドルされていません。 この PECL 拡張モジュールをインストールする方法は、 マニュアルの PECL 拡張モジュールのインストール という章にあります。 新規リリース・ダウンロード・ソースファイル・管理者情報・CHANGELOG といった関連する情報については、次の場所にあります。 » https://pecl.php.net/package/ingres.

これらの関数を利用可能とするには、オプション --with-ingres[=DIR] を付け、 Ingres サポートを有効にして PHP をコンパイルする必要があります。ただし、DIR は Ingres ベースディレクトリで、/II/ingres が デフォルトです。環境変数 II_SYSTEM が正しく設定されていない場合、 Ingres をインストールしたディレクトリを指定するために --with-ingres=DIR を使用することが 必要となる可能性があります。

この拡張モジュールを Apache で使用する際に Apache が起動せず、 "PHP Fatal error: Unable to start ingres_ii module in Unknown on line 0" というエラーが発生する場合、 環境変数 II_SYSTEM が正確に設定されているかどうかを確認してください。 "export II_SYSTEM="/home/ingres/II" を Apache を開始するスクリプトに 追加してください。この後に httpd を起動すればうまくいくはずです。

実行時設定

php.ini の設定により動作が変化します。

Ingres 設定オプション
名前 デフォルト 変更の可否 変更履歴
ingres.allow_persistent "1" PHP_INI_SYSTEM PHP 4.0.2 以降で使用可能です。PHP 5.1.0 で削除されました。
ingres.max_persistent "-1" PHP_INI_SYSTEM PHP 4.0.2 以降で使用可能です。PHP 5.1.0 で削除されました。
ingres.max_links "-1" PHP_INI_SYSTEM PHP 4.0.2 以降で使用可能です。PHP 5.1.0 で削除されました。
ingres.default_database NULL PHP_INI_ALL PHP 4.0.2 以降で使用可能です。PHP 5.1.0 で削除されました。
ingres.default_user NULL PHP_INI_ALL PHP 4.0.2 以降で使用可能です。PHP 5.1.0 で削除されました。
ingres.default_password NULL PHP_INI_ALL PHP 4.0.2 以降で使用可能です。PHP 5.1.0 で削除されました。
ingres.report_db_warnings "1" PHP_INI_ALL ingres 1.1 以降で使用可能です。
ingres.cursor_mode "0" PHP_INI_ALL ingres 1.1 以降で使用可能です。
ingres.blob_segment_length "4096" PHP_INI_ALL ingres 1.2.0 以降で使用可能です。
ingres.trace_connect "0" PHP_INI_ALL ingres 1.2.1 以降で使用可能です。
ingres.timeout "-1" PHP_INI_ALL ingres 1.4.0 以降で使用可能です。
ingres.array_index_start "1" PHP_INI_ALL ingres 1.4.0 以降で使用可能です。
PHP_INI_* 定数の詳細および定義については php.ini ディレクティブ を参照してください。

リソース型

ingres_connect() および ingres_pconnect() は Ingres II リンク ID を返します。

定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。

INGRES_ASSOC (integer)
フィールド名をキーとする配列でカラムデータを返します。
INGRES_NUM (integer)
数値添字の配列でカラムデータを返します。 結果の最初のフィールドの添字は 1 となります。
INGRES_BOTH (integer)
数値添字・フィールド名キーの両方の形式でカラムデータを返します。
INGRES_EXT_VERSION (string)
Ingres 拡張モジュールのバージョンを表します。 PECL 拡張モジュールのバージョン 1.2.0 以降で使用可能です。
INGRES_API_VERSION (integer)
この拡張モジュールがビルドされた際の Ingres OpenAPI のバージョンを表します。 PECL 拡張モジュールのバージョン 1.2.0 以降で使用可能です。
INGRES_CURSOR_READONLY (integer)
Ingres カーソルが 'readonly' モードでオープンされていることを表します。 PECL 拡張モジュールのバージョン 1.2.0 以降で使用可能です。
INGRES_CURSOR_UPDATE (integer)
Ingres カーソルが 'update' モードでオープンされていることを表します。 PECL 拡張モジュールのバージョン 1.2.0 以降で使用可能です。
INGRES_DATE_MULTINATIONAL (integer)
II_DATE_FORMAT の設定 MULTINATIONAL と等価です。 PECL 拡張モジュールのバージョン 1.2.0 以降で使用可能です。
INGRES_DATE_MULTINATIONAL4 (integer)
II_DATE_FORMAT の設定 MULTINATIONAL4 と等価です。 PECL 拡張モジュールのバージョン 1.2.0 以降で使用可能です。
INGRES_DATE_FINNISH (integer)
II_DATE_FORMAT の設定 FINNISH と等価です。 PECL 拡張モジュールのバージョン 1.2.0 以降で使用可能です。
INGRES_DATE_ISO (integer)
II_DATE_FORMAT の設定 ISO と等価です。 PECL 拡張モジュールのバージョン 1.2.0 以降で使用可能です。
INGRES_DATE_ISO4 (integer)
II_DATE_FORMAT の設定 ISO4 と等価です。 PECL 拡張モジュールのバージョン 1.2.0 以降で使用可能です。
INGRES_DATE_GERMAN (integer)
II_DATE_FORMAT の設定 GERMAN と等価です。 PECL 拡張モジュールのバージョン 1.2.0 以降で使用可能です。
INGRES_DATE_MDY (integer)
II_DATE_FORMAT の設定 MDY と等価です。 PECL 拡張モジュールのバージョン 1.2.0 以降で使用可能です。
INGRES_DATE_DMY (integer)
II_DATE_FORMAT の設定 DMY と等価です。 PECL 拡張モジュールのバージョン 1.2.0 以降で使用可能です。
INGRES_DATE_YMD (integer)
II_DATE_FORMAT の設定 YMD と等価です。 PECL 拡張モジュールのバージョン 1.2.0 以降で使用可能です。
INGRES_MONEY_LEADING (integer)
金額の値の先頭に表示する文字を表します。 II_MONEY_FORMAT の設定 'L:' と等価です。 PECL 拡張モジュールのバージョン 1.2.0 以降で使用可能です。
INGRES_MONEY_TRAILING (integer)
金額の値の最後に表示する文字を表します。 II_MONEY_FORMAT の設定 'T:' と等価です。 PECL 拡張モジュールのバージョン 1.2.0 以降で使用可能です。
INGRES_STRUCTURE_BTREE (integer)
デフォルトのテーブル構造あるいはインデックス構造を BTREE に設定します。 これは、接続時のオプション table_structure あるいは index_structure と組み合わせて使用します。 PECL 拡張モジュールのバージョン 1.4.0 以降で使用可能です。
INGRES_STRUCTURE_CBTREE (integer)
デフォルトのテーブル構造あるいはインデックス構造を COMPRESSED BTREE に設定します。 これは、接続時のオプション table_structure あるいは index_structure と組み合わせて使用します。 PECL 拡張モジュールのバージョン 1.4.0 以降で使用可能です。
INGRES_STRUCTURE_HASH (integer)
デフォルトのテーブル構造あるいはインデックス構造を HASH に設定します。 これは、接続時のオプション table_structure あるいは index_structure と組み合わせて使用します。 PECL 拡張モジュールのバージョン 1.4.0 以降で使用可能です。
INGRES_STRUCTURE_CHASH (integer)
デフォルトのテーブル構造あるいはインデックス構造を COMPRESSED HASH に設定します。 これは、接続時のオプション table_structure あるいは index_structure と組み合わせて使用します。 PECL 拡張モジュールのバージョン 1.4.0 以降で使用可能です。
INGRES_STRUCTURE_HEAP (integer)
デフォルトのテーブル構造あるいはインデックス構造を HEAP に設定します。 これは、接続時のオプション table_structure あるいは index_structure と組み合わせて使用します。 PECL 拡張モジュールのバージョン 1.4.0 以降で使用可能です。
INGRES_STRUCTURE_CHEAP (integer)
デフォルトのテーブル構造あるいはインデックス構造を COMPRESSED HEAP に設定します。 これは、接続時のオプション table_structure あるいは index_structure と組み合わせて使用します。 PECL 拡張モジュールのバージョン 1.4.0 以降で使用可能です。
INGRES_STRUCTURE_ISAM (integer)
デフォルトのテーブル構造あるいはインデックス構造を ISAM に設定します。 これは、接続時のオプション table_structure あるいは index_structure と組み合わせて使用します。 PECL 拡張モジュールのバージョン 1.4.0 以降で使用可能です。
INGRES_STRUCTURE_CISAM (integer)
デフォルトのテーブル構造あるいはインデックス構造を COMPRESSED ISAM に設定します。 これは、接続時のオプション table_structure あるいは index_structure と組み合わせて使用します。 PECL 拡張モジュールのバージョン 1.4.0 以降で使用可能です。

この例では、Ingres データベースに対する接続、クエリの実行、 結果の表示および接続解除の方法を説明します。

Example#1 シンプルな Ingres の例

<?php
// 接続し、データベースを選択します
$link ingres_connect('database''user''password')
    or die(
'接続できなせんでした: ' ingres_error($link));
echo 
'接続に成功しました';

// すべての Ingres データベース内に存在するテーブルから select します
$query 'SELECT * FROM iirelation';
$returncode ingres_query($query,$link) or die('問い合わせに失敗しました: ' .
ingres_error($link));

// 結果を HTML で出力します
// relid - テーブル名
// relowner - テーブルの所有者
echo "<table>\n";
while (
$iirelation ingres_fetch_object(INGRES_BOTH$link)) {
    echo 
"\t<tr>\n";
    echo 
"\t\t<td>" $iirelation->relid "</td>\n";
    echo 
"\t\t<td>" $iirelation->relowner "</td>\n";
    echo 
"\t</tr>\n";
}
echo 
"</table>\n";

// トランザクションをコミットします
ingres_commit($link);
// 接続を閉じます
ingres_close($link);
?>

目次