8.5.x database.inc db_query_temporary($query, array $args = [], array $options = [])
8.0.x database.inc db_query_temporary($query, array $args = array(), array $options = array())
8.1.x database.inc db_query_temporary($query, array $args = array(), array $options = array())
8.2.x database.inc db_query_temporary($query, array $args = array(), array $options = array())
8.3.x database.inc db_query_temporary($query, array $args = [], array $options = [])
8.4.x database.inc db_query_temporary($query, array $args = [], array $options = [])
8.6.x database.inc db_query_temporary($query, array $args = [], array $options = [])
4.7.x database.pgsql.inc db_query_temporary($query)
4.7.x database.mysqli.inc db_query_temporary($query)
4.7.x database.mysql.inc db_query_temporary($query)
5.x database.pgsql.inc db_query_temporary($query)
5.x database.mysqli.inc db_query_temporary($query)
5.x database.mysql.inc db_query_temporary($query)
6.x database.pgsql.inc db_query_temporary($query)
6.x database.mysqli.inc db_query_temporary($query)
6.x database.mysql.inc db_query_temporary($query)
7.x database.inc db_query_temporary($query, array $args = array(), array $options = array())

Executes a SELECT query string and saves the result set to a temporary table.

The execution of the query string happens against the active database.


string $query: The prepared SELECT statement query to run. Although it will accept both named and unnamed placeholders, named placeholders are strongly preferred as they are more self-documenting.

array $args: An array of values to substitute into the query. If the query uses named placeholders, this is an associative array in any order. If the query uses unnamed placeholders (?), this is an indexed array and the order must match the order of placeholders in the query string.

array $options: An array of options to control how the query operates.

Return value

The name of the temporary table.


as of Drupal 8.0.x, will be removed in Drupal 9.0.0. Instead, get a database connection injected into your service from the container and call queryTemporary() on it. For example, $injected_database->queryTemporary($query, $args, $options);

See also



Related topics

2 calls to db_query_temporary()
DatabaseTestController::dbQueryTemporary in core/modules/system/tests/modules/database_test/src/Controller/DatabaseTestController.php
Runs db_query_temporary() and outputs the table name and its number of rows.
TemporaryQueryTest::testTemporaryQuery in core/modules/system/tests/src/Functional/Database/TemporaryQueryTest.php
Confirms that temporary tables work and are limited to one request.


core/includes/database.inc, line 130
Core systems for the database layer.


function db_query_temporary($query, array $args = [], array $options = []) {
  if (empty($options['target'])) {
    $options['target'] = 'default';
  return Database::getConnection($options['target'])
    ->queryTemporary($query, $args, $options);