Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
PHP: Ingres II 関数 - Manual
[go: Go Back, main page]

PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

ingres_autocommit" width="11" height="7"/> <PDO_INFORMIX DSN
Last updated: Thu, 31 May 2007

view this page in

LXX. Ingres II 関数

導入

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

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

要件

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

インストール手順

この » PECL 拡張 モジュールは PHP にバンドルされていません。 この PECL 拡張モジュールをインストールする方法は、 マニュアルの PECL 拡張モジュールのインストール という章にあります。 新規リリース・ダウンロード・ソースファイル・管理者情報・CHANGELOG といった関連する情報については、次の場所にあります。 » http://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 の設定により動作が変化します。

表 148. Ingres 設定オプション

名前デフォルト変更の可否変更履歴
ingres.allow_persistent"1"PHP_INI_SYSTEMPHP 4.0.2 以降で使用可能です。
ingres.max_persistent"-1"PHP_INI_SYSTEMPHP 4.0.2 以降で使用可能です。
ingres.max_links"-1"PHP_INI_SYSTEMPHP 4.0.2 以降で使用可能です。
ingres.default_databaseNULLPHP_INI_ALLPHP 4.0.2 以降で使用可能です。
ingres.default_userNULLPHP_INI_ALLPHP 4.0.2 以降で使用可能です。
ingres.default_passwordNULLPHP_INI_ALLPHP 4.0.2 以降で使用可能です。
ingres.report_db_warnings"1"PHP_INI_ALLPECL 拡張モジュールのバージョン 1.1.0 以降で使用可能です。
ingres.cursor_mode"0"PHP_INI_ALLPECL 拡張モジュールのバージョン 1.1.0 以降で使用可能です。
ingres.blob_segment_length"4096"PHP_INI_ALLPECL 拡張モジュールのバージョン 1.2.0 以降で使用可能です。
ingres.trace_connect"0"PHP_INI_ALLPECL 拡張モジュールのバージョン 1.3.1 以降で使用可能です。
ingres.timeout"-1"PHP_INI_ALLPECL 拡張モジュールのバージョン 1.3.1 以降で使用可能です。
ingres.array_index_start"1"PHP_INI_ALLPECL 拡張モジュールのバージョン 1.3.1 以降で使用可能です。

PHP_INI_* 定数の詳細および定義については 付録 I. 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 データベースに対する接続、クエリの実行、 結果の表示および接続解除の方法を説明します。

例 1036. シンプルな 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);
?>

目次

ingres_autocommit — autocommit をオンまたはオフに切替える
ingres_close — Ingres II データベース接続を閉じる
ingres_commit — トランザクションをコミットする
ingres_connect — Ingres データベースへの接続をオープンする
ingres_cursor — 指定したリンクリソースのカーソル名を取得する
ingres_errno — 直近に発生した ingres エラー番号を取得する
ingres_error — 直近に発生したエラーのエラーメッセージを取得する
ingres_errsqlstate — 直近に発生した SQLSTATE エラーコードを取得する
ingres_fetch_array — 1 行分の結果を配列に取得する
ingres_fetch_object — 1 行分の結果をオブジェクトとして取得する
ingres_fetch_row — 1 行分の結果を数値添字配列として取得する
ingres_field_length — フィールド長を得る
ingres_field_name — クエリ結果においてフィールド名を得る
ingres_field_nullable — フィールドに NULL 値を設定可能かどうか調べる
ingres_field_precision — フィールドの精度を得る
ingres_field_scale — フィールドのスケールを得る
ingres_field_type — クエリ結果においてフィールドの型を得る
ingres_num_fields — 直近のクエリにより返されたフィールドの数を得る
ingres_num_rows — 直近のクエリで作用されたレコードの数を取得し、返す
ingres_pconnect — Ingres II データベースへの持続的接続をオープンする
ingres_query — Ingres II に SQL クエリを送信する
ingres_rollback — トランザクションをロールバックする


add a note add a note User Contributed Notes
Ingres II 関数
corysbrain-ondrugs at yahoo dot com
08-Jul-2007 01:04
My post below works but is *not* the correct way.  It only works because of default behavior.   I'll re-post my understanding of what is "correct" soon.
corysbrain-ondrugs at yahoo dot com
14-Feb-2007 11:57
On the three versions of Linux/Ingres I've worked on, I've always had to modify the following line in the example above:

while ($iirelation = ingres_fetch_object($link)) {

to:

while ($iirelation = ingres_fetch_object()) {

If not, PHP will return "Undefined property" notices. 

However,  it's my understanding that the following is the proper way to access the database (it works as expected):

<?php
// Connecting, selecting database
$link = ingres_connect('database', 'user', 'password')
   or die(
'Could not connect: ' . ingres_error($link));
echo
'Connected successfully';

// Select from a table that exists in all Ingres databases
$query = 'SELECT * FROM iirelation';
$rs = ingres_query($query,$link) or die('Query failed: ' .
ingres_error($link));

// Print results in HTML
// relid - table name
// relowner - table owner
echo "<table>\n";
while (
$iirelation = ingres_fetch_object($rs)) {
   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";

// Commit transaction
ingres_commit($link);
// Closing connection
ingres_close($link);
?>
mail at hannes-reinecke dot de
12-Dec-2002 08:09
If you try to use the 'Embedded Ingres' as it is delivered with certain CA products (e.g. TNG UHD), the referenced library '-lingres' is not available. You need to add '-lq -lframe' instead.
burckhardtNOSPAM at SNIPITOFFgsf dot de
24-Jan-2002 03:07
Hi,
I am currently migrating from MySQL to Ingres. Generally, almost ALL INGRES-functions that use arrays start with counter=1, NOT counter=0. Also, whereas MySQL-functions use $result as an argument, INGRES-functions use $connection instead.
Florian

 
show source | credits | sitemap | contact | advertising | mirror sites