(PHP 4 >= 4.0.6, PHP 5 <= 5.0.5, PECL dbx >= 1.1.0)
dbx_query — クエリを送信し、(ある場合には)結果を全て取得する
クエリを送信し、すべての結果を取得します。
dbx_connect() が返す DBX リンクオブジェクト。
SQL 文。
クエリ内のデータは 適切にエスケープ しておかなければなりません。
flags パラメータは、返される情報の量を制御する ために使用されます。以下の定数の組み合わせを、論理 OR 演算子 (|) で連結したものとなります。DBX_COLNAMES_* フラグは php.ini の dbx.colnames_case 設定を上書きします。
dbx_query() は、成功した場合に オブジェクトあるいは 1、失敗した場合に 0 を返します。 結果オブジェクトが返されるのは、sql_statement で指定されたクエリが結果セットを生成する場合(例: SELECT クエリ。結果が 0 件の場合も含む)のみです。
返されるオブジェクトは、flags の設定により 4 つまたは 5 つのプロパティを保持します。
接続したデータベースの有効なハンドルで、モジュール専用関数で (必要ならば)使用されます。
<?php
$result = dbx_query($link, "SELECT id FROM table");
mysql_field_len($result->handle, 0);
?>
これらは、それぞれカラム数(フィールド数)および行数(レコード数) を表します。
<?php
$result = dbx_query($link, 'SELECT id FROM table');
echo $result->rows; // レコード数
echo $result->cols; // フィールド数
?>
例1 各フィールドの名前と型を一覧表示する
<?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";
}
?>
例2 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";
?>
例3 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";
?>
バージョン | 説明 |
---|---|
5.0.0 | DBX_RESULT_UNBUFFERED が追加されました。 |
4.3.0 | Introduced DBX_COLNAMES_UNCHANGED, DBX_COLNAMES_UPPERCASE および DBX_COLNAMES_LOWERCASE が追加されました。 |
例4 返り値を処理する方法
<?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 データベースでは、クエリ結果のカラム名は小文字で返されます。