PHP マニュアル
前のページ |  | 次のページ

# dbx_query

(PHP 4 >= 4.0.6)

dbx_query -- クエリを送信し、(ある場合には)結果を全て取得する

## 説明

dbx_result_object dbx_query ( dbx_link_object link_identifier, string sql_statement [, long flags])

警告
このモジュールは、実験的なものです。これは、これらの関数の動作、関数名は、このドキュメントに書かれて事項と同様に告知なく将来的なPHPのリリースで変更される可能性があります。注意を喚起するとともに、このモジュールは使用者のリスクで使用して下さい。

成功時にdbx_result_objectまたは1を返します。結果オブジェクトは、 SQL命令が結果を返す場合にのみ返されます。エラーの場合には、0を返 します。パラメータ `flags` は、返される情報 の量を制御するために使用されます。定数 DBX_RESULT_INFO, DBX_RESULT_INDEX, DBX_RESULT_ASSOC またはこれらの論理和を組み合わ せることが可能です。DBX_RESULT_INFO を指定するとフィールド名およ びフィールド型のようなカラムに関する情報が提供されます。 DBX_RESULT_INDEX により、結果は(data[2][3]のような、ただし、2はレ コード番号、3はカラム番号)2次元の配列で返されます。ただし、最初の レコードおよびカラム番号は0から始まります。 DBX_RESULT_ASSOC により、フィールド名にカラム添字が関連付けられま す。パラメータ`flags` によらず DBX_RESULT_INDEXは常に返されることに注意して下さい。 DBX_RESULT_ASSOC が指定された場合、DBX_RESULT_INFOは指定されない 場合でも返されます。これは、DBX_RESULT_INDEX,DBX_RESULT_INDEX | DBX_RESULT_INFO および DBX_RESULT_INDEX | DBX_RESULT_INFO | DBX_RESULT_ASSOC の組み合わせのみが結果的に使用可能であることを意 味します。 `flags` が指定されない場合、この 最後の組み合わせがデフォルトです。連想配列で参照される結果は、添 字番号の結果へのリファレンスです。このため、 `data[0][0]` を修正した場合、 `data[0]['fieldnameforfirstcolumn']` も同時に修 正されます。

dbx_result_object には、5つのメンバがあります。 (`flags`によっては4つの場合もあります)これら は、'handle', 'cols', 'rows', 'info'(オプション), 'data'です。 handle は、指定したモジュールに関する有効な結果IDであり、次のよう にモジュール専用関数で使用可能です。

    $result = dbx_query ($link, "SELECT id FROM tbl");
    mysql_field_len ($result->handle, 0);

メンバ cols および rows は、それぞれカラム(またはフィールド)番号 および行(またはレコード)番号です。例えば、

    $result = dbx_query ($link, "SELECT id FROM tbl");
    echo "result size: " . $result->rows . " x " . $result->cols . "<br>\n";

メンバinfoは、DBX_RESULT_INFOまたはDBX_RESULT_ASSOCが `flags`パラメータで指定された場合のみ返され ます。このメンバは2次元配列で、カラム情報を取得するために二つのレ コード("name"と"type")を有しています。例えば、

    $result = dbx_query ($link, "SELECT id FROM tbl");
    echo "column name: " . $result->info["name"][0] . "<br>\n";
    echo "column type: " . $result->info["type"][0] . "<br>\n";

メンバdataには、実際の結果が含まれます。そして、カラム名も同様に 関連しています。DBX_RESULT_ASSOCが設定された場合、 `$result->data[2]["fieldname"]`を使用することが 可能です。

例 1dbx_query() の例
    <?php
    $link = dbx_connect ("odbc", "", "db", "username", "password")
        or die ("Could not connect");
    $result = dbx_query ($link, "SELECT id, parentid, description FROM tbl");
    if ($result==0) echo "Query failed\n<br>";
    elseif ($result==1) {
        echo "Query executed successfully\n<br>";
    } else {
        $rows=$result->rows;
        $cols=$result->cols;
        echo "<p>table dimension: {$result->rows} x {$result->cols}<br><table border=1>\n";
        echo "<tr>";
        for ($col=0; $col<$cols; ++$col) {
            echo "<td>-{$result->info["name"][$col]}-<br>-{$result->info["type"][$col]}-</td>";
        }
        echo "</tr>\n";
        for ($row=0; $row<$rows; ++$row){
            echo "<tr>";
            for ($col=0; $col<$cols; ++$col) {
                echo "<td>-{$result->data[$row][$col]}-</td>";
            }
            echo "</tr>\n";
        }
        echo "</table><p>\n";
        echo "table dimension: {$result->rows} x id, parentid, description<br><table border=1>\n";
        for ($row=0; $row<$rows; ++$row) {
            echo "<tr>";
            echo "<td>-{$result->data[$row]["id"]}-</td>";
            echo "<td>-{$result->data[$row]["parentid"]}-</td>";
            echo "<td>-{$result->data[$row]["description"]}-</td>";
            echo "</tr>\n";
        }
        echo "</table><p>\n";
    }
    dbx_close($link);
    ?>

> 注意 モジュール毎のドキュメントも参照下さい。

dbx_connect()も参照下さい。

前のページ | ホーム | 次のページ
dbx_escape_string | 上に戻る | dbx_sort