以下の関数により、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 の設定により動作が変化します。
名前 | デフォルト | 変更の可否 | 変更履歴 |
---|---|---|---|
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 以降で使用可能です。 |
ingres_connect() および ingres_pconnect() は Ingres II リンク ID を返します。
以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。
この例では、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);
?>