Учебник РНР
Назад Вперёд

sesam_query

(только 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); ?>

Назад Оглавление Вперёд
sesam_num_fields Вверх sesam_rollback