int ifx_query
(string query, int [link_identifier]
, int [cursor_type]
, mixed [blobidarray]
);返り値: 成功時に正の Informix 結果 ID、エラー時に FALSE
整数 "result_id" は、クエリー結果を取得するために 他の関数により使用されます。 ifx_affected_rows 関数による取得を行うために "affected_rows" をセットします。
ifx_query は、サーバー上の 指定したリンク ID が指す現在アクティブなデータベースに クエリーを送信します。リンク ID が指定されない場合は、 最後にオープンされたリンクを仮定します。 リンクがオープンされていない場合、この関数は、 ifx_connect がコールされた時と同様に リンクを確立しようと試み、それを使用します。
接続 conn_id において query を実行します。 "select 型" のクエリーでは、カーソルが定義され、オープンされます。 オプションの cursor_type パラメータにより、 そのカーソルを "スクロール" または "ホールド" カーソルとすることができます。 このオプションはマスクであり、IFX_SCROLL, IFX_HOLD, または 両方とも指定することができます。 select でないクエリーは、"直ちに実行"されます。
どちらのタイプのクエリーにおいても、(予測または実際の数として) 作用された行の数は、ifx_affected_rows により 取得するために保存されます。
もし、update クエリーにおいて BLOB (BYTE または TEXT) カラムがある場合、 対応する "BLOB ID" を有する blobidarray パラメータを追加することが可能です。 この場合、クエリーテキストのこれらのカラムを "?" で置換することが必要です。
TEXT (または BYTE) カラムの内容が許すならば、 "ifx_textasvarchar(1)" または "ifx_byteasvarchar(1)" を使用することも 可能です。 これにより、TEXT (または BYTE) カラムは、select クエリーの 通常の(しかし長い)VARCHAR カラムと同様に処理され、 BLOB ID で悩むこともなくなります。
ifx_textasvarchar(0) または ifx_byteasvarchar(0) (デフォルト値) の場合、select クエリーは、BLOB ID (整数値) に属するものとして BLOB カラムを返します。 BLOB 関数により文字列またはファイルとして BLOB の値を得ることが可能です。 (以下を参照)
ifx_connect も参照下さい。
例 1. "orders" テーブルの全行を HTML テーブルとして表示する
ifx_textasvarchar(1); // BLOB 用に "text mode" を使用する $res_id = ifx_query("select * from orders", $conn_id); if (! $res_id) { printf("Can't select orders : %s\n<br>%s<br>\n", ifx_error()); ifx_error(); ifx_errormsg(); die; } ifx_htmltbl_result($res_id, "border=\"1\""); ifx_free_result($res_id);
例 2. 値を "catalog" テーブルに挿入する
// バイトおよびテキストカラムに関する BLOB ID を作成する。 $textid = ifx_create_blob(0, 0, "Text column in memory"); $byteid = ifx_create_blob(1, 0, "Byte column in memory"); // blob id を blobid 配列に保存 $blobidarray[] = $textid; $blobidarray[] = $byteid; // クエリーを実行 $query = "insert into catalog (stock_num, manu_code, " . "cat_descr,cat_picture) values(1,'HRO',?,?)"; $res_id = ifx_query($query, $conn_id, $blobidarray); if (! $res_id) { ... error ... } // 結果 id を解放 ifx_free_result($res_id);