(только PHP 3 CVS)
sesam_query - выполняет SESAM SQL-запрос и готовит результат. Описание
string sesam_query (string query [, bool scrollable]) Возвращает SESAM "result identifier" при успехе,
FALSE при ошибке. Ресурс "result_id" используется другими функциями для запрашивания
результатов выполнения query/запроса. sesam_query() отправляет запрос текущей активной БД на сервере. Могут выполняться как "immediate"
SQL-операторы, так и "select type" запросы. Если выполняется "immediate" оператор, то курсор не выделяется, а последующий вызов
sesam_fetch_row() или
sesam_fetch_result() возвращает пустой результат (нулевые столбцы, указывающие end-of-result). Для "select
type" операторов выделяются дескриптор результата и (прокручиваемый или последовательный, в зависимости от необязательного булева параметра
scrollable) курсор. Если scrollable отсутствует, курсор будет последовательным/sequential.
При использовании "scrollable" курсоров курсор может свободно позиционироваться в результирующем наборе. Для каждого "scrollable" запроса
имеются глобальные значения по умолчанию для прокручиваемого/scrolling типа (инициализируется:
SESAM_SEEK_NEXT) и смещение прокрутки, которое может быть установлено однократно функцией
sesam_seek_row(), либо каждый раз при извлечении ряда функцией
sesam_fetch_row(). Для "immediate" операторов количество задействованных рядов сохраняется
для запрашивания функцией 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";
// Добавить шапку title с именами столбцов над результатом:
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 {
// Извлечь результат блоками максимум по 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";
}
// освободить result id
sesam_free_result($result);
?> |
|
|