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

# sesam_query

(PHP 3 CVS only)

sesam_query -- SESAM SQL クエリを実行し、結果を準備する

## 説明

string sesam_query ( string query, bool `[scrollable]`)

返り値: 成功時にSESAM "結果ID" またはエラー時に `FALSE`。

"result_id"リソースは、クエリ結果を取得する際に他の関数で使用され ます。

sesam_query() は、クエリをサーバ上の現在アクティ ブなデータベースに送信します。この関数は、"即時"SQL命令および "select型"クエリの両方を実行可能です。"即時型"命令を実行した場合、 カーソルは確保されず、この後に sesam_fetch_row() または sesam_fetch_result() をコールしても空の結果(結 果の終端を示すカラム数0)が返されます。"select型"命令の場合、結果 記述子および(オプションのパラメータ `scrollable`の設定によりスクロール型または連 続型の)カーソルが確保されます。`scrollable` が省略された場合、カーソルは連続型となります。

"スクロール型"カーソルを使用している場合、カーソルは結果集合上を 自由に移動可能です。各"スクロール型"クエリに関して、スクロール型 のグローバルデフォルト値(`SESAM_SEEK_NEXT`に初期 化されています)と sesam_seek_row() により一度 設定するか、sesam_fetch_row() を使用してレコー ドを取得する度に設定するスクロールオフセットがあります。

"即時型"命令の場合、作用されたレコードの数が保存されます。この数 は、sesam_affected_rows() 関数で取得可能です。

sesam_fetch_row() および sesam_fetch_result() も参照下さい。

例 1 "phone"テーブルの全てのレコードをHTMLテーブルとして表示

    <?php
    if (!sesam_connect ("phonedb", "demo", "otto"))
        die ("cannot connect");
    $result = sesam_query ("select * from phone");
    if (!$result) {
        $err = sesam_diagnostic();
        die ($err["errmsg"]);
    }
    echo "<TABLE BORDER>\n";
    // Add title header with column names above the result:
    if ($cols = sesam_field_array ($result)) {
        echo " <TR><TH COLSPAN=".$cols["count"].">Result:</TH></TR>\n";
        echo " <TR>\n";
        for ($col = 0; $col < $cols["count"]; ++$col) {
            $colattr = $cols[$col];
            /* Span the table head over SESAM's "Multiple Fields": */
            if ($colattr["count"] > 1) {
                echo "  <TH COLSPAN=".$colattr["count"].">".$colattr["name"].
                    "(1..".$colattr["count"].")</TH>\n";
                $col += $colattr["count"] - 1;
            } else
                echo "  <TH>" . $colattr["name"] . "</TH>\n";
        }
        echo " </TR>\n";
    }

    do {
        // Fetch the result in chunks of 100 rows max.
        $ok = sesam_fetch_result ($result, 100);
        for ($row=0; $row < $ok["rows"]; ++$row) {
            echo " <TR>\n";
            for ($col = 0; $col < $ok["cols"]; ++$col) {
                if (isset($ok[$col][$row]))
                    echo "  <TD>" . $ok[$col][$row] . "</TD>\n";
                } else {
                    echo "  <TD>-empty-</TD>\n";
                }
            }
            echo " </TR>\n";
        }
    }
    while ($ok["truncated"]) { // while there may be more data
        echo "</TABLE>\n";
    }
    // free result id
    sesam_free_result($result);
    ?>

前のページ | ホーム | 次のページ
sesam_num_fields | 上に戻る | sesam_rollback