Далее перечислены методы класса Database, не попавшие в другие разделы.
void changeDatabase ( [string name] )
Метод позволяет временно переключиться на другую базу данных и далее работать уже с ней. Название базы данный передается параметром name; если он не указан − движок переключается на основную базу данных сайта, указанную в константе DatabaseName. Если для подключения к новой базе данных не хватает прав, или если такая база данных отсутствует, генерируется фатальная ошибка.
Пример:
// Выборка данных из сторонней таблицы affiliate.news
$database->changeDatabase("affiliate");
$news=$database->getLines("news");
// Возврат к "родной" базе данных
$database->changeDatabase(); array getDebugInformation ( void )
Метод позволяет получить отладочную информацию, такую, как количество выполненных запросов и время работы скрипта. Результат работы метода − ассоциативный массив с ключами queries, started, finished и elapsed − количество выполненных запросов, время начала работы скрипта, время завершения работы скрипта и затраченное время, соответственно.
Также поддерживается возможность хранения не только количества выполненных запросов, но и списка этих запросов. Для включения этого режима достаточно задать константе DatabaseQueryLogEnabled значение true. В этом случае метод будет возвращать не целочисленное значение в ключе queries, а массив строк. Способ удобен для локальной отладки и оптимизации проектов; включать его на работающем сайте не рекомендуется, поскольку хранение запросов требует памяти, а нечаянный вывод их на экран может навредить безопасности проекта.
Пример шаблона:
<?-- Немного отладочной информации, только для локальной работы --?>
<?-- Лучше всего вставлять этот фрагмент в конец шаблона htmlDesign --?>
<logic:local>
<?php $debug=$database->getDebugInformation(); ?>
Время генерации страницы: <var:debug:elapsed float> сек.<br>
Количество выполненных запросов: <var:debug:queries>.<br>
</logic:local>
string getVersion ( void )
Метод возвращает версию используемой СУБД.
Пример:
// Отображении версии БД
$version=$database->getVersion();
echo $version; // Что-нибудь вроде 5.1.20-beta
array getTableTypes ( void )
Метод возвращает список типов таблиц, поддерживаемых данной СУБД. Результат имеет вид обычного массива. Полученные типы можно использовать, например, при изменении типа таблицы методом changeTableType.
Пример:
// Вывод всех поддерживаемых типов таблиц
$types=$database->getTableTypes();
foreach($types as $type) echo $type; // MyISAM HEAP MERGE BDB InnoDB
array getFieldTypes ( void )
Метод возвращает список типов данных, поддерживаемых данной СУБД. Результат имеет вид обычного массива. Полученные типы можно использовать при создании новых полей таблицы или редактировании существующих.
Пример:
// Вывод всех поддерживаемых типов данных
$types=$database->getFieldTypes();
foreach($types as $type) echo $type; // TINYINT SMALLINT MEDIUMINT INT...
array getNumericFieldTypes ( void )
Метод работает аналогично предыдущему (возвращает список поддерживаемых типов данных), но в отличие от него, возвращает только числовые или сходные с ними типы. Сюда относятся целочисленные, вещественные и денежные типы, типы для хранения даты и времени, а также перечислимые типы и типы-множества.
Пример:
// Вывод всех числовых типов данных
$types=$database->getNumericFieldTypes();
foreach($types as $type) echo $type; // TINYINT SMALLINT MEDIUMINT INT...
array getReservedWords ( void )
Метод возвращает список зарезервированных слов данной СУБД. Слова из этого списка нельзя использовать в качестве названий таблиц или полей. Результат имеет вид обычного массива.
Пример:
// Вывод всех зарезервированных слов
$words=$database->getReservedWords();
foreach($words as $word) echo $word; // ACCESSIBLE ACTION ADD AGAINST...
void startTransaction ( void )
Метод начинает новую транзакцию. Транзакция − это последовательность SQL-запросов, действие которых при возникновении ошибки или сбоя можно отменить. Транзакционный подход отличается от традиционного "атомарного", в котором каждый запрос выполняется или не выполняется независимо от остальных. Как правило, использование транзакций требует большего расхода памяти, а SQL-запросы при транзакциях работают медленнее. Кроме того, транзакции поддерживаются только некоторыми типами таблиц − BDB и InnoDB.
Пример:
// Начало транзакции
$database->startTransaction();
// Теперь можно выполнять наиболее критичные запросы
void commitTransaction ( void )
Метод завершает начатую ранее транзакцию и оставляет в силе все внесенные изменения.
Пример:
// Завершение транзакции
$database->commitTransaction();
void rollbackTransaction ( void )
Метод выполняет откат начатой ранее транзакции и отменяет все внесенные в течение транзакции изменения.
Пример:
// Откат транзакции
$database->rollbackTransaction();