(PHP 4 >= 4.0.2, PHP 5 <= 5.0.5, PECL ingres >= 1.0.0)
ingres_query — Ingres に SQL クエリを送信する
ingres_query() は、指定した query を Ingres サーバに送信します。
クエリは、現在オープンされているトランザクションの一部となります。 オープンされているトランザクションがない場合、 ingres_query() は新規のトランザクションをオープンします。 トランザクションをクローズするには、データベースへの変更をコミットする場合に ingres_commit() を、 これらの変更をキャンセルする場合に ingres_rollback() のどちらかを使用することが可能です。 スクリプト終了時に、全てのオープンされたトランザクションは (ingres_rollback() をコールすることにより) ロールバックされます。新規トランザクションをオープンする前に ingres_autocommit() を使用することも可能です。 この場合、各 SQL クエリは直ちにコミットされます。
注意: 関連する設定項目
実行時設定 での ingres.describe、 ingres.scrollable および ingres.utf8 の説明も参照ください。
接続リンク ID。
有効な SQL クエリ (Ingres ドキュメントにある Ingres SQL リファレンスガイド を参照ください)。
次の型の SQL クエリは、この関数で送信できません。
クエリで使用するパラメータの値のの配列。
渡されたパラメータの値の型を含む文字列。 ingres.describe が有効な場合は このパラメータは無視され、サーバが期待している型をドライバが自動的に取得します。
型コード | Ingres の型 |
---|---|
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 を返します。 それ以外の場合 (INSERT、UPDATE あるいは DELETE 文の場合) は 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);
?>