Google

NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7">

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()も参照下さい。