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("接続できません"); $result = sesam_query("select * from phone"); if (!$result) { $err = sesam_diagnostic(); die ($err["errmsg"]); } echo "<table border>\n"; // 結果の上にカラム名をヘッダとして表示します 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]; /* SESAM の "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 { // 最大 100 行までに分割して結果を取得します $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"]); // データがなくなるまで続けます
echo "</table>\n"; // 結果 id を開放します sesam_free_result($result); ?>
|
|