Skip to content
Snippets Groups Projects
Select Git revision
  • 05420fde76b402a8c29e159d3fe78a142341f6d1
  • 11.x default protected
  • 11.2.x protected
  • 10.6.x protected
  • 10.5.x protected
  • 11.1.x protected
  • 10.4.x protected
  • 11.0.x protected
  • 10.3.x protected
  • 7.x protected
  • 10.2.x protected
  • 10.1.x protected
  • 9.5.x protected
  • 10.0.x protected
  • 9.4.x protected
  • 9.3.x protected
  • 9.2.x protected
  • 9.1.x protected
  • 8.9.x protected
  • 9.0.x protected
  • 8.8.x protected
  • 10.5.1 protected
  • 11.2.2 protected
  • 11.2.1 protected
  • 11.2.0 protected
  • 10.5.0 protected
  • 11.2.0-rc2 protected
  • 10.5.0-rc1 protected
  • 11.2.0-rc1 protected
  • 10.4.8 protected
  • 11.1.8 protected
  • 10.5.0-beta1 protected
  • 11.2.0-beta1 protected
  • 11.2.0-alpha1 protected
  • 10.4.7 protected
  • 11.1.7 protected
  • 10.4.6 protected
  • 11.1.6 protected
  • 10.3.14 protected
  • 10.4.5 protected
  • 11.0.13 protected
41 results

node.module

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Insert.php 2.72 KiB
    <?php
    
    /**
     * @file
     * Definition of Drupal\Core\Database\Driver\mysql\Insert
     */
    
    namespace Drupal\Core\Database\Driver\mysql;
    
    use Drupal\Core\Database\Query\Insert as QueryInsert;
    
    class Insert extends QueryInsert {
    
      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;
      }
    
      public function __toString() {
        // Create a sanitized comment string to prepend to the query.
        $comments = $this->connection->makeComment($this->comments);
    
        // Default fields are always placed first for consistency.
        $insert_fields = array_merge($this->defaultFields, $this->insertFields);
    
        // 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)) {
          return $comments . 'INSERT INTO {' . $this->table . '} (' . implode(', ', $insert_fields) . ') ' . $this->fromQuery;
        }
    
        $query = $comments . 'INSERT INTO {' . $this->table . '} (' . implode(', ', $insert_fields) . ') VALUES ';
    
        $max_placeholder = 0;
        $values = array();
        if (count($this->insertValues)) {
          foreach ($this->insertValues as $insert_values) {
            $placeholders = array();
    
            // Default fields aren't really placeholders, but this is the most convenient
            // way to handle them.
            $placeholders = array_pad($placeholders, count($this->defaultFields), 'default');
    
            $new_placeholder = $max_placeholder + count($insert_values);
            for ($i = $max_placeholder; $i < $new_placeholder; ++$i) {
              $placeholders[] = ':db_insert_placeholder_' . $i;
            }
            $max_placeholder = $new_placeholder;
            $values[] = '(' . implode(', ', $placeholders) . ')';
          }
        }
        else {
          // If there are no values, then this is a default-only query. We still need to handle that.
          $placeholders = array_fill(0, count($this->defaultFields), 'default');
          $values[] = '(' . implode(', ', $placeholders) . ')';
        }
    
        $query .= implode(', ', $values);
    
        return $query;
      }
    }