db_query_range

5 database.pgsql.inc db_query_range($query)
5 database.mysqli.inc db_query_range($query)
5 database.mysql.inc db_query_range($query)
6 database.mysqli.inc db_query_range($query)
6 database.pgsql.inc db_query_range($query)
6 database.mysql.inc db_query_range($query)
7 database.inc db_query_range($query, $from, $count, array $args = array(), array $options = array())
8 database.inc db_query_range($query, $from, $count, array $args = array(), array $options = array())

Runs a limited-range query in the active database.

Use this as a substitute for db_query() when a subset of the query is to be returned. User-supplied arguments to the query should be passed in as separate parameters so that they can be properly escaped to avoid SQL injection attacks.

Parameters

$query: A string containing an SQL query.

...: A variable number of arguments which are substituted into the query using printf() syntax. Instead of a variable number of query arguments, you may also pass a single array containing the query arguments. Valid %-modifiers are: %s, %d, %f, %b (binary data, do not enclose in '') and %%.

NOTE: using this syntax will cast NULL and FALSE values to decimal 0, and TRUE values to decimal 1.

$from: The first result row to return.

$count: The maximum number of result rows to return.

Return value

A database query result resource, or FALSE if the query was not executed correctly.

Related topics

39 calls to db_query_range()

1 string reference to 'db_query_range'

File

includes/database.pgsql.inc, line 271
Database interface code for PostgreSQL database servers.

Code

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) $count . ' OFFSET ' . (int) $from;
  return _db_query($query);
}

Comments

How use this function in Drupal 6

Please note the order of arguments in Drupal 6 is switched around from what it is in Drupal 7

db_query_range($query, $args,$from, $count);

Enjoy it.

$from parameter

Quote from MySQL documentation: "The offset of the initial row is 0 (not 1)", so use 0 in $from if you would like to retrieve from the first record.

Sample example query

We can use db_query_range() for retrieve limited records

db_query_range("SELECT nid FROM {node}", 0, 6);

Instead of

db_query("SELECT nid FROM {node} limit 0, 6");

Login or register to post comments