Ingres に SQL クエリを送信する

# ingres_query

(PHP 4 >= 4.0.2, PHP 5 < 5.1.0, PECL ingres >= 1.0.0)

ingres_query — Ingres に SQL クエリを送信する

### 説明

ingres_query ( resource `$link` , string `$query` [, array `$params` [, string `$types` ]] ) : mixed

ingres_query() は、指定した `query` を Ingres サーバーに送信します。

クエリは、現在オープンされているトランザクションの一部となります。 オープンされているトランザクションがない場合、 ingres_query() は新規のトランザクションをオープンします。 トランザクションをクローズするには、データベースへの変更をコミットする場合に ingres_commit() を、 これらの変更をキャンセルする場合に ingres_rollback() のどちらかを使用することが可能です。 スクリプト終了時に、全てのオープンされたトランザクションは (ingres_rollback() をコールすることにより) ロールバックされます。新規トランザクションをオープンする前に ingres_autocommit() を使用することも可能です。 この場合、各 SQL クエリは直ちにコミットされます。

> 注意: 関連する設定項目

> 実行時設定 での ingres.describe、 ingres.scrollable および ingres.utf8 の説明も参照ください。

### パラメータ

`link`

  接続リンク ID。

`query`

  有効な SQL クエリ (Ingres ドキュメントにある Ingres SQL リファレンスガイド を参照ください)。

  クエリ内のデータは 適切にエスケープ しておかなければなりません。

  次の型の SQL クエリは、この関数で送信できません。

  - close (ingres_close() を参照)
  - commit (ingres_commit() を参照)
  - connect (ingres_connect() を参照)
  - disconnect (ingres_close() を参照)
  - get dbevent
  - prepare to commit
  - rollback (ingres_rollback() を参照)
  - savepoint
  - set autocommit (ingres_autocommit() を参照)
  - カーソルに関係するクエリはサポートされていません
`params`

  クエリで使用するパラメータの値の配列。

`types`

  渡されたパラメータの値の型を含む文字列。 ingres.describe が有効な場合は このパラメータは無視され、サーバーが期待している型をドライバが自動的に取得します。

  型コード | Ingres の型
  --- | ---
  a | BOOLEAN
  b | BYTE
  B | LONG BYTE/BLOB
  c | CHAR
  d | DATE/ANSIDATE/TIMESTAMP/TIME
  f | FLOAT
  i | INTEGER
  L | LONG TEXT
  m | MONEY
  M | LONG NVARCHAR
  n | NCHAR
  N | NVARCHAR
  t | TEXT
  v | VARCHAR
  V | LONG VARCHAR

### 返り値

ingres_query() は、 成功した場合にクエリ結果 ID、それ以外の場合に `FALSE` を返します。 エラーが発生したかどうかを知るには ingres_errno()、 ingres_error() あるいは ingres_errsqlstate() を使用します。

### 例

例1 単純な select の送信

`<?php
$link = ingres_connect("demodb");
$result = ingres_query($link, "select * from user_profile");
while ($row = ingres_fetch_row($result)) {
echo $row[1];
echo $row[2];
}
?>`

例2 ingres_query() へクエリパラメータを渡す

`<?php
$link = ingres_connect("demodb");
$params[] = "Emma";
$query = "select * from user_profile where up_first = ?";
$result = ingres_query($link, $query, $params);
while ($row = ingres_fetch_row($result)) {
echo $row[1];
echo $row[2];
}
?>`

例3 パラメータの型を指定した BLOB の挿入

`<?php
$link = ingres_connect("demodb");
// 写真をオープンします
$fh = fopen("photo.jpg","r");
$blob_data = stream_get_contents($fh);
fclose($fh);
// パラメータを準備します
$params[] = $blob_data;
$params[] = 1201;
// パラメータの型を定義します
$param_types = "Bi";
$query = "update user_profile set up_image = ? where up_id = ?";
$result = ingres_query($link, $query , $params, $param_types);
if (ingres_errno())
{
echo ingres_errno() . "-" . ingres_error() . "\n";
}
ingres_commit($link);
ingres_close($link);
?>`

### 参考

- ingres_unbuffered_query() - 未バッファ SQL クエリを Ingres に送信する
- ingres_fetch_array() - 1 行分の結果を配列に取得する
- ingres_fetch_assoc() - 1 行分の結果を連想配列に取得する
- ingres_fetch_object() - 1 行分の結果をオブジェクトとして取得する
- ingres_fetch_row() - 1 行分の結果を数値添字配列として取得する
- ingres_commit() - トランザクションをコミットする
- ingres_rollback() - トランザクションをロールバックする
- ingres_autocommit() - autocommit をオンまたはオフに切替える
- ingres_set_environment() - 環境を設定して出力オプションを制御する
- ingres_errno() - 直近に発生した ingres エラー番号を取得する
- ingres_error() - 直近に発生したエラーのエラーメッセージを取得する