db_query_range
includes/database.mysql.inc, строка 228
- Версии
- 5 – 6
db_query_range($query)
Выполняет ограниченный диапазоном запрос к активной базе данных.
Используйте эту функцию как заменитель db_query()
, когда необходимо получить лишь часть выборки запроса. Пользовательские аргументы к SQL-запросу должны передаваться отдельными параметрами к функции, чтобы быть правильно экранированными, дабы избежать SQL-инъекций.
Примечание: использование этого синтаксиса приведет к тому, что NULL
и FALSE
будут превращаться в десятичный 0, а TRUE
в десятичную 1.
Параметры
$query
Строка, содержащая SQL-запрос.
... Переменное количество аргументов, которые подставляются в запрос по типу printf()
. Вместо переменного количества аргументов, можно использовать один массив, содержащий необходимые аргументы. Правильные шаблоны для подстановки: '%s'
, '%d'
, '%f'
, '%b'
(двоичные данные, не следует помещать в кавычки ''
) и '%%'
.
$from
Номер первого ряда в выборке.
$count
Максимальное количество рядов, которое следует возвратить.
Возвращаемое значение
Результирующий ресурс запроса или FALSE
, если запрос вызвал ошибку.
Связанные темы
Код
<?php
function db_query_range($query) {
$args = func_get_args();
$count = array_pop($args);
$from = array_pop($args);
array_shift($args);
$query = db_prefix_tables($query);
if (isset($args[0]) and is_array($args[0])) { // 'All arguments in one array' syntax
$args = $args[0];
}
_db_query_callback($args, TRUE);
$query = preg_replace_callback(DB_QUERY_REGEXP, '_db_query_callback', $query);
$query .= ' LIMIT '. (int)$from .', '. (int)$count;
return _db_query($query);
}
?>
Функция позволяет передавать переменные через шаблоны подстановки. Например:
RETURN db_result(db_query_range("SELECT tid FROM {term_data} WHERE name = '%s'", $name, 0, 1));
Также можно передавать переменные в SQL-запрос одним ассоциативным массивом - это описано выше в статье.
PS.
В Drupal 7 сигнатура будет более расширеной:
db_query_range($query, $from, $count, array $args = array(), array $options = array())