Главная » Drupal » Документация Drupal » Справочник API » Уровень абстракции базы данных Drupal 5 Drupal 6
Распечатать статью

Уровень абстракции базы данных Drupal 5 Drupal 6

Позволяет выполнять один программный код на разных СУБД.

Гибкий уровень абстракции Друпал позволяет легко работать с различными типами баз данных, напримерMySQL или PGSQL. Он максимально сохраняет синтаксис и мощь SQL, изменяя отдельные параметры запросов для разных типов баз и оставляя основные элементы безопасности неизменными.

Большинство обращений к базам данных выполняется с помощью функций db_query() или db_query_range(). Разработчикам стоит также обратить внимание на функцию pager_query(), которая используется в случае запросов, результаты которых нужно будет вывести постранично, и функцию tablesort_sql(), которая формирует запросы для сортируемых таблиц.

Например, нужно вывести список последних 10 статей определенного пользователя. Вместо прямого выполнения SQL-запроса

SELECT n.title, n.body, n.created FROM node n WHERE n.uid = $uid LIMIT 0, 10;

можно вызвать функцию Drupal:

$result = db_query_range('SELECT n.title, n.body, n.created FROM {node} n WHERE n.uid = %d', $uid, 0, 10);
while ($node = db_fetch_object($result)) {
  // Совершить какие-то операции над $node->body, и т.д.
}

Фигурные скобки вокруг 'node' применяются для автоподстановки префиксов таблиц, которую делает функция db_prefix_tables(). Параметр uid вставляется в запрос через заменитель '%d' и аргумент функции ($uid), что предотвращает SQL-инъекцию, возможною при подаче в $uid вредоносного значения.

Синтакс SQL-конструкции LIMIT зависит от конкретной СУБД, поэтому, следует использовать функциюdb_query_range() для получения соответствующей функциональности.

И наконец, для получения и работы с результатом, преимущественно используйте db_fetch_object().

Константы

Имя Описание
DB_QUERY_REGEXP
includes/database.inc
Определяет символы-заполнители, которые должны быть заменены в_db_query_callback().

Функции

Имя Описание
db_affected_rows
includes/database.mysql.inc
Возвращает количество записей, изменённых предыдущим запросом.
db_check_setup
includes/database.pgsql.inc
Проверяет, корректно ли настроена база данных.
db_column_exists
includes/database.mysql.inc
Проверяет наличие колонки в данной таблице.
db_connect
includes/database.mysql.inc
Инициализирует соединение с базой данных.
db_decode_blob
includes/database.mysql.inc
Возвращает текст из BLOB-значения. В случае с PostgreSQL, перекодирует данные после выборки из bytea-полей.
db_distinct_field
includes/database.mysql.inc
Оборачивает данное поле таблицы в 'DISTINCT()'. Функция добавляет эту обвертку в ‘SELECT’ запроса и возвращает измененный запрос. Эта функция применяется только если ‘DISTINCT’ еще не присутствует в запросе.
db_encode_blob
includes/database.mysql.inc
Возвращает корректно-отформатированнное BLOB значение. В случае с PostgreSQL, кодирует данные в bytea-поле.
db_error
includes/database.mysql.inc
Определяет, возратил ли ошибку предыдущий запрос.
db_escape_string
includes/database.mysql.inc
Подготавливает пользовательские данные для использования в SQL-запросе. Предотвращает SQL-инъекции. Примечание: Эта функция работает с PostgreSQL 7.2 или выше.
db_escape_table
includes/database.inc
Ограничивает использование служебных символов в названиях динамических таблиц и столбцов.
db_fetch_array
includes/database.mysql.inc
Выбирает одну запись из результата предыдущего запроса и представляет ее как массив.
db_fetch_object
includes/database.mysql.inc
Выбирает одну запись из результата предыдущего запроса и представляет ее как объект.
db_is_active
includes/database.inc
Определяет доступность базы данных. Возвращает булевское значение TRUE или FALSE.
db_lock_table
includes/database.mysql.inc
Блокирует таблицу. Эта функция автоматически начинает транзакцию БД.
db_placeholders
includes/database.inc
Генерирует заполнители для аргументов запроса одного типа.
db_prefix_tables
includes/database.inc
Добавляет префиксы (если нужно) ко всем таблицам запроса.
db_query_range
includes/database.mysql.inc
Выполняет ограниченный диапазоном запрос к активной базе данных.
db_query_temporary
includes/database.mysql.inc
Выполняет SELECT-запрос к активной базе данных и сохраняет результат во временной таблице.
db_result
includes/database.mysql.inc
Возвращает одиночное поле результата из предыдущего запроса.
db_rewrite_sql
includes/database.inc
Изменяет первоначальные запросы нодов, таксономии и комментариев. Часто используется для формирования списков.
db_set_active
includes/database.inc
Активирует базу данных для последующих запросов.
db_status_report
includes/database.mysql.inc
Возвращает отчёт о состоянии базы данных.
db_table_exists
includes/database.mysql.inc
Проверяет, существует ли таблица.
db_unlock_tables
includes/database.mysql.inc
Разблокирует все заблокированные таблицы. Эта функция автоматически завершает транзакцию.
db_version
includes/database.mysql.inc
Возвращает версию используемого сервера баз данных.
pager_query
includes/pager.inc
Выполняет «постраничный» запрос к базе данных.
tablesort_sql
includes/tablesort.inc
Создает сортировочную часть SQL запроса.
update_sql
includes/database.inc
Выполняет SQL-запрос и возвращает статус результата. Используется преимущественно в hook_update_N() и остальных функциях инсталяции/обновления модулей.
_db_error_page
includes/database.inc
Вспомогательная функция для показа фатальных ошибок в базе данных.
_db_query
includes/database.mysql.inc
Вспомогательная функция для db_query().
_db_query_callback
includes/database.inc
Вспомогательная функция для db_query().
_db_rewrite_sql
includes/database.inc
Вспомогательная функция для db_rewrite_sql().

Источник: drupal.ru

Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

Оставить комментарий

Похожие статьи