8.3.x database.inc db_insert($table, array $options = [])
8.0.x database.inc db_insert($table, array $options = array())
8.1.x database.inc db_insert($table, array $options = array())
8.2.x database.inc db_insert($table, array $options = array())
8.4.x database.inc db_insert($table, array $options = [])
7.x database.inc db_insert($table, array $options = array())

Returns a new InsertQuery object for the active database.


string $table: The table into which to insert.

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

Return value

\Drupal\Core\Database\Query\Insert A new Insert object for this connection.


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 insert() on it. For example, $injected_database->insert($table, $options);

See also



Related topics

58 calls to db_insert()
BasicSyntaxTest::testLikeBackslash in core/tests/Drupal/KernelTests/Core/Database/BasicSyntaxTest.php
Tests a LIKE query containing a backslash.
BasicSyntaxTest::testLikeEscape in core/tests/Drupal/KernelTests/Core/Database/BasicSyntaxTest.php
Tests escaping of LIKE wildcards.
CacheTest::testNoneResultCaching in core/modules/views/tests/src/Kernel/Plugin/CacheTest.php
Tests no caching.
CacheTest::testTimeResultCaching in core/modules/views/tests/src/Kernel/Plugin/CacheTest.php
Tests time based caching.
CaseSensitivityTest::testCaseSensitiveInsert in core/tests/Drupal/KernelTests/Core/Database/CaseSensitivityTest.php
Tests BINARY collation in MySQL.

... See full list


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


function db_insert($table, array $options = array()) {
  if (empty($options['target']) || $options['target'] == 'replica') {
    $options['target'] = 'default';
  return Database::getConnection($options['target'])->insert($table, $options);


thhafner’s picture

Here is a quick example of inserting data from a custom form on form submission.

$conn = Database::getConnection();
    'sender_name' => $form_state->getValue('name'),
    'sender_email' => $form_state->getValue('email'),
    'sender_subject' => $form_state->getValue('recipient'),
    'sender_message' => $form_state->getValue('message'),
krishanchandra’s picture

This is helped me --- $form_state->getValue('name'),

imanoop’s picture

$Data = db_insert('table_name')
'fid' => $form_state->getValue('img')[0],
'name' => $form_state->getValue('client_title'),
'description' => $form_state->getValue('short_desc'),
'changed' => time(),
'status' => '1',

In your table default value should not be none.