(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 の説明も参照ください。
link
接続リンク ID。
query
有効な SQL クエリ (Ingres ドキュメントにある Ingres SQL リファレンスガイド を参照ください)。
クエリ内のデータは 適切にエスケープ しておかなければなりません。
次の型の SQL クエリは、この関数で送信できません。
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);
?>