dbx_query
dbx_query — クエリを送信し、(ある場合には)結果を全て取得する
説明
mixed dbx_query ( object link_identifier, string sql_statement [, int flags] )クエリを送信し、すべての結果を取得します。
パラメータ
- link_identifier
-
dbx_connect() が返す DBX リンクオブジェクト。
- sql_statement
-
SQL 文。
- flags
-
比較するカラム。
- flags
-
flags パラメータは、返される情報の量を制御する
ために使用されます。以下の定数の組み合わせを、論理 OR 演算子
(|) で連結したものとなります。DBX_COLNAMES_* フラグは php.ini
の dbx.colnames_case 設定を上書きします。
- DBX_RESULT_INDEX
-
これは常に設定され、結果に二次元配列の
data プロパティを含めます。たとえば
data[2][3] では 2 が行番号
(レコード番号)を表し、3 がカラム番号
(フィールド番号)を表します。最初の行やカラムの番号は 0 です。
DBX_RESULT_ASSOC が指定された場合、返される オブジェクトには DBX_RESULT_INFO に関連する 情報が(指定していなくても)含まれます。 - DBX_RESULT_INFO
- カラムに関する情報、つまりフィールド名とフィールドの型を含めます。
- DBX_RESULT_ASSOC
-
返されるオブジェクトの data プロパティの
キーとして、関連するカラム名の値がアクセスされます。
関連付けられた結果は数値添字となっているので、 data[0][0] を変更すると data[0]['最初のカラムのフィールド名'] も同様に 変更されます。 - DBX_RESULT_UNBUFFERED (PHP 5)
-
このフラグは data プロパティを作成せず、
rows プロパティの初期値を 0 に設定します。
結果セットが大きくなる場合にこのフラグを使用し、
dbx_fetch_row() を使用して結果を 1 行ごとに
取得してください。
dbx_fetch_row() 関数は、このクエリで設定した フラグの内容を反映じた行を返します。また、この関数がコールされる たびに rows が更新されます。 - DBX_COLNAMES_UNCHANGED (PHP 4.3.0 以降で使用可能)
- 返されるカラム名の大文字小文字を変更しません。
- DBX_COLNAMES_UPPERCASE (PHP 4.3.0 以降で使用可能)
- 返されるカラム名を大文字に変更します。
- DBX_COLNAMES_LOWERCASE (PHP 4.3.0 以降で使用可能)
- 返されるカラム名を小文字に変更します。
- DBX_RESULT_INDEX
- DBX_RESULT_INDEX | DBX_RESULT_INFO
- DBX_RESULT_INDEX | DBX_RESULT_INFO | DBX_RESULT_ASSOC - flags を指定しなかった場合、これがデフォルトです。
返り値
dbx_query() は、成功した場合に オブジェクトあるいは 1、失敗した場合に 0 を返します。 結果オブジェクトが返されるのは、sql_statement で指定されたクエリが結果セットを生成する場合(例: SELECT クエリ。結果が 0 件の場合も含む)のみです。返されるobject は、flags の設定により 4 つまたは 5 つのプロパティを保持します。
- handle
-
接続したデータベースの有効なハンドルで、モジュール専用関数で
(必要ならば)使用されます。
<?php
$result = dbx_query($link, "SELECT id FROM table");
mysql_field_len($result->handle, 0);
?> - cols および rows
-
これらは、それぞれカラム数(フィールド数)および行数(レコード数)
を表します。
<?php
$result = dbx_query($link, 'SELECT id FROM table');
echo $result->rows; // レコード数
echo $result->cols; // フィールド数
?> - info (オプション)
-
flags パラメータに
DBX_RESULT_INFO あるいは
DBX_RESULT_ASSOC が指定されている場合のみ
返されます。2 次元の配列で、2 つのキー(name
および type)を持ち、カラムの情報を取得するために
使用します。
例 463. 各フィールドの名前と型を一覧表示する
<?php
$result = dbx_query($link, 'SELECT id FROM table',
DBX_RESULT_INDEX | DBX_RESULT_INFO);
for ($i = 0; $i < $result->cols; $i++ ) {
echo $result->info['name'][$i] . "\n";
echo $result->info['type'][$i] . "\n";
}
?> - data
-
このプロパティには結果のデータが含まれます。flags
の設定によってはこのデータはカラム名と関連付けられているでしょう。
DBX_RESULT_ASSOC が設定されていた場合、
$result->data[2]["field_name"] のように使用可能です。
例 464. data プロパティの内容を HTML テーブルで表示する
<?php
$result = dbx_query($link, 'SELECT id, parentid, description FROM table');
echo "<table>\n";
foreach ($result->data as $row) {
echo "<tr>\n";
foreach ($row as $field) {
echo "<td>$field</td>";
}
echo "</tr>\n";
}
echo "</table>\n";
?>
例 465. UNBUFFERED クエリの処理法
<?php
$result = dbx_query ($link, 'SELECT id, parentid, description FROM table', DBX_RESULT_UNBUFFERED);
echo "<table>\n";
while ($row = dbx_fetch_row($result)) {
echo "<tr>\n";
foreach ($row as $field) {
echo "<td>$field</td>";
}
echo "</tr>\n";
}
echo "</table>\n";
?>
例
例 466. 返り値を処理する方法
<?php
$link = dbx_connect(DBX_ODBC, "", "db", "username", "password")
or die("接続できませんでした");
$result = dbx_query($link, 'SELECT id, parentid, description FROM table');
if (is_object($result) ) {
// ... ここで何かを行います。詳細は以下の例で示します。 ...
// まず、フィールド名とデータ型を表示します。
// 次に、返されたフィールド値をもとに表を作成します。
} else {
exit("クエリに失敗しました");
}
dbx_close($link);
?>
注意
注意: モジュール固有のドキュメントも参照ください。Oracle データベースでは、クエリ結果のカラム名は小文字で返されます。
参考
dbx_escape_string() |
dbx_fetch_row() |
dbx_connect() |
- dbx_queryのページへのリンク