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() - 直近に発生したエラーのエラーメッセージを取得する