public function Insert::execute

Same name in this branch
  1. 9.x drupal/core/lib/Drupal/Core/Database/Query/Insert.php \Drupal\Core\Database\Query\Insert::execute()
  2. 9.x drupal/core/lib/Drupal/Core/Database/Driver/mysql/Insert.php \Drupal\Core\Database\Driver\mysql\Insert::execute()
  3. 9.x drupal/core/lib/Drupal/Core/Database/Driver/sqlite/Insert.php \Drupal\Core\Database\Driver\sqlite\Insert::execute()
  4. 9.x drupal/core/lib/Drupal/Core/Database/Driver/pgsql/Insert.php \Drupal\Core\Database\Driver\pgsql\Insert::execute()

Executes the insert query.

Return value

The last insert ID of the query, if one exists. If the query was given multiple sets of values to insert, the return value is undefined. If no fields are specified, this method will do nothing and return NULL. That makes it safe to use in multi-insert loops.

Overrides Insert::execute

File

drupal/core/lib/Drupal/Core/Database/Driver/mysql/Insert.php, line 14
Definition of Drupal\Core\Database\Driver\mysql\Insert

Class

Insert

Namespace

Drupal\Core\Database\Driver\mysql

Code

public function execute() {
  if (!$this
    ->preExecute()) {
    return NULL;
  }

  // If we're selecting from a SelectQuery, finish building the query and
  // pass it back, as any remaining options are irrelevant.
  if (empty($this->fromQuery)) {
    $max_placeholder = 0;
    $values = array();
    foreach ($this->insertValues as $insert_values) {
      foreach ($insert_values as $value) {
        $values[':db_insert_placeholder_' . $max_placeholder++] = $value;
      }
    }
  }
  else {
    $values = $this->fromQuery
      ->getArguments();
  }
  $last_insert_id = $this->connection
    ->query((string) $this, $values, $this->queryOptions);

  // Re-initialize the values array so that we can re-use this query.
  $this->insertValues = array();
  return $last_insert_id;
}