Same name and namespace in other branches
  1. 4.6.x includes/database.inc \db_query()
  2. 4.7.x includes/database.inc \db_query()
  3. 5.x includes/database.inc \db_query()
  4. 6.x includes/database.pgsql.inc \db_query()
  5. 6.x includes/database.mysql-common.inc \db_query()
  6. 7.x includes/database/database.inc \db_query()

Executes an arbitrary query string against the active database.

Use this function for SELECT queries if it is just a simple query string. If the caller or other modules need to change the query, use \Drupal::database()->select() instead.

Do not use this function for INSERT, UPDATE, or DELETE queries. Those should be handled via \Drupal::database()->insert(), \Drupal::database()->update(), \Drupal::database()->merge()and \Drupal::database()->delete().

Parameters

string|\Drupal\Core\Database\StatementInterface $query: The prepared statement query to run. Although it will accept both named and unnamed placeholders, named placeholders are strongly preferred as they are more self-documenting. If the argument corresponding to a placeholder is an array of values to be expanded (for example, with an IN query), the placeholder should be named with a trailing bracket like :example[].

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

\Drupal\Core\Database\StatementInterface A prepared statement object, already executed.

Deprecated

in drupal:8.0.0 and is removed from drupal:9.0.0. Instead, get a database connection injected into your service from the container and call query() on it. For example, $injected_database->query($query, $args, $options);

See also

https://www.drupal.org/node/2993033

\Drupal\Core\Database\Connection::query()

\Drupal\Core\Database\Connection::defaultOptions()

Related topics

1 call to db_query()
DatabaseLegacyTest::testDbQuery in core/tests/Drupal/KernelTests/Core/Database/DatabaseLegacyTest.php
Tests the db_query() function.
1 string reference to 'db_query'
Error::decodeException in core/lib/Drupal/Core/Utility/Error.php
Decodes an exception and retrieves the correct caller.

File

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

Code

function db_query($query, array $args = [], array $options = []) {
  @trigger_error('db_query() is deprecated in drupal:8.0.0. It will be removed before drupal:9.0.0. Instead, get a database connection injected into your service from the container and call query() on it. For example, $injected_database->query($query, $args, $options). See https://www.drupal.org/node/2993033', E_USER_DEPRECATED);
  return Database::getConnection(_db_get_target($options))
    ->query($query, $args, $options);
}