function Insert::execute
Same name in this branch
- 10 core/modules/mysql/src/Driver/Database/mysql/Insert.php \Drupal\mysql\Driver\Database\mysql\Insert::execute()
- 10 core/modules/pgsql/src/Driver/Database/pgsql/Insert.php \Drupal\pgsql\Driver\Database\pgsql\Insert::execute()
- 10 core/lib/Drupal/Core/Database/Query/Insert.php \Drupal\Core\Database\Query\Insert::execute()
Same name in other branches
- 9 core/modules/sqlite/src/Driver/Database/sqlite/Insert.php \Drupal\sqlite\Driver\Database\sqlite\Insert::execute()
- 9 core/modules/mysql/src/Driver/Database/mysql/Insert.php \Drupal\mysql\Driver\Database\mysql\Insert::execute()
- 9 core/modules/pgsql/src/Driver/Database/pgsql/Insert.php \Drupal\pgsql\Driver\Database\pgsql\Insert::execute()
- 9 core/lib/Drupal/Core/Database/Query/Insert.php \Drupal\Core\Database\Query\Insert::execute()
- 8.9.x core/lib/Drupal/Core/Database/Driver/sqlite/Insert.php \Drupal\Core\Database\Driver\sqlite\Insert::execute()
- 8.9.x core/lib/Drupal/Core/Database/Driver/mysql/Insert.php \Drupal\Core\Database\Driver\mysql\Insert::execute()
- 8.9.x core/lib/Drupal/Core/Database/Driver/pgsql/Insert.php \Drupal\Core\Database\Driver\pgsql\Insert::execute()
- 8.9.x core/lib/Drupal/Core/Database/Query/Insert.php \Drupal\Core\Database\Query\Insert::execute()
- 11.x core/modules/sqlite/src/Driver/Database/sqlite/Insert.php \Drupal\sqlite\Driver\Database\sqlite\Insert::execute()
- 11.x core/modules/mysql/src/Driver/Database/mysql/Insert.php \Drupal\mysql\Driver\Database\mysql\Insert::execute()
- 11.x core/modules/pgsql/src/Driver/Database/pgsql/Insert.php \Drupal\pgsql\Driver\Database\pgsql\Insert::execute()
- 11.x core/lib/Drupal/Core/Database/Query/Insert.php \Drupal\Core\Database\Query\Insert::execute()
Overrides Insert::execute
File
-
core/
modules/ sqlite/ src/ Driver/ Database/ sqlite/ Insert.php, line 30
Class
- Insert
- SQLite implementation of \Drupal\Core\Database\Query\Insert.
Namespace
Drupal\sqlite\Driver\Database\sqliteCode
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)) {
// The SelectQuery may contain arguments, load and pass them through.
return $this->connection
->query((string) $this, $this->fromQuery
->getArguments(), $this->queryOptions);
}
// If there are any fields in the query, execute normal INSERT statements.
if (count($this->insertFields)) {
$stmt = $this->connection
->prepareStatement((string) $this, $this->queryOptions);
if (count($this->insertValues) === 1) {
// Inserting a single row does not require a transaction to be atomic,
// and executes faster without a transaction wrapper.
$insert_values = $this->insertValues[0];
try {
$stmt->execute($insert_values, $this->queryOptions);
} catch (\Exception $e) {
$this->connection
->exceptionHandler()
->handleExecutionException($e, $stmt, $insert_values, $this->queryOptions);
}
}
else {
// Inserting multiple rows requires a transaction to be atomic, and
// executes faster as a single transaction.
try {
$transaction = $this->connection
->startTransaction();
} catch (\PDOException $e) {
// $this->connection->exceptionHandler()->handleExecutionException()
// requires a $statement argument, so we cannot use that.
throw new DatabaseExceptionWrapper($e->getMessage(), 0, $e);
}
foreach ($this->insertValues as $insert_values) {
try {
$stmt->execute($insert_values, $this->queryOptions);
} catch (\Exception $e) {
// One of the INSERTs failed, rollback the whole batch.
$transaction->rollBack();
$this->connection
->exceptionHandler()
->handleExecutionException($e, $stmt, $insert_values, $this->queryOptions);
}
}
}
// Re-initialize the values array so that we can re-use this query.
$this->insertValues = [];
}
else {
$stmt = $this->connection
->prepareStatement("INSERT INTO {{$this->table}} DEFAULT VALUES", $this->queryOptions);
try {
$stmt->execute(NULL, $this->queryOptions);
} catch (\Exception $e) {
$this->connection
->exceptionHandler()
->handleExecutionException($e, $stmt, [], $this->queryOptions);
}
}
return $this->connection
->lastInsertId();
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.