ifx_query

(PHP 4, PHP 5 < 5.2.1)

ifx_queryInformix クエリを送信する

説明

ifx_query ( string $query , resource $link_identifier [, int $cursor_type [, mixed $blobidarray ]] ) : resource

指定したリンク ID が指す現在アクティブなデータベースに クエリ query を送信します。

"select 型" のクエリの場合はカーソルを宣言してオープンします。 select 以外のクエリは、直接実行されます。

どちらのタイプのクエリにおいても、(予測または実際の数として) 作用された行の数は ifx_affected_rows() により 取得可能です。

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 の値を得ることが 可能です (下記を参照ください)。

パラメータ

query

クエリ文字列。

link_identifier

リンク ID。

cursor_def

オプションのパラメータで、そのカーソルを "スクロール" または "ホールド" カーソルとすることができます。 このオプションはビットマスクであり、 IFX_SCROLLIFX_HOLD あるいは 両方とも指定することができます。

blobidarray

もし、クエリにおいて BLOB (BYTE または TEXT) カラムがある場合、 対応する "BLOB ID" を有する blobidarray パラメータを追加することが可能です。この場合、クエリテキストの これらのカラムを "?" で置換することが必要です。

返り値

成功した場合に Informix 結果 ID、エラー時に FALSE を返します。

例1 "orders" テーブルの全行を HTML テーブルとして表示する

<?php
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_errormsg());
    die;
}
ifx_htmltbl_result($res_id"border=\"1\"");
ifx_free_result($res_id);
?>

例2 値を "catalog" テーブルに挿入する

<?php

// バイトおよびテキストカラムに関する BLOB ID を作成する。
$textid ifx_create_blob(00"Text column in memory");
$byteid ifx_create_blob(10"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) {
    
/* ... エラー ... */
}

// 結果 id を解放
ifx_free_result($res_id);
?>

参考

  • ifx_connect() - Informix サーバーへの接続をオープンする