diff --git a/includes/database/database.inc b/includes/database/database.inc index 24ac3c42cae..22bd8fe2ef5 100644 --- a/includes/database/database.inc +++ b/includes/database/database.inc @@ -316,13 +316,6 @@ abstract class DatabaseConnection extends PDO { */ protected $schema = NULL; - /** - * A unique number used for dynamic placeholders. - * - * It gets reset after every executed query. - */ - protected $nextPlaceholder = 1; - function __construct($dsn, $username, $password, $driver_options = array()) { // Because the other methods don't seem to work right. $driver_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; @@ -336,20 +329,6 @@ abstract class DatabaseConnection extends PDO { } } - /** - * Reset the next placeholder number back to 1. - */ - public function resetPlaceholder() { - $this->nextPlaceholder = 1; - } - - /** - * Get the current unique placeholder number and increment it. - */ - public function getNextPlaceholder() { - return $this->nextPlaceholder++; - } - /** * Return the default query options for any given query. * @@ -588,9 +567,6 @@ abstract class DatabaseConnection extends PDO { $stmt->execute($args, $options); } - // Reset the placeholder numbering. - $this->resetPlaceholder(); - // Depending on the type of query we may need to return a different value. // See DatabaseConnection::defaultOptions() for a description of each value. switch ($options['return']) { diff --git a/includes/database/pgsql/database.inc b/includes/database/pgsql/database.inc index d3246274d1f..ec68c3a396a 100644 --- a/includes/database/pgsql/database.inc +++ b/includes/database/pgsql/database.inc @@ -68,8 +68,6 @@ class DatabaseConnection_pgsql extends DatabaseConnection { $stmt = $this->prepareQuery($query, !$modified); $stmt->execute($args, $options); } - // Reset the placeholder numbering. - $this->resetPlaceholder(); switch ($options['return']) { case Database::RETURN_STATEMENT: diff --git a/includes/database/query.inc b/includes/database/query.inc index 6ca869e52a0..b6b47f48d90 100644 --- a/includes/database/query.inc +++ b/includes/database/query.inc @@ -1161,6 +1161,13 @@ class DatabaseCondition implements QueryConditionInterface, Countable { } public function compile(DatabaseConnection $connection) { + // This value is static, so it will increment across the entire request + // rather than just this query. That is OK, because we only need definitive + // placeholder names if we're going to use them for _alter hooks, which we + // are not. The alter hook would intervene before compilation. + // $next_placeholder does not use drupal_static as it increments and should + // never be reset during a request. + static $next_placeholder = 1; if ($this->changed) { @@ -1213,7 +1220,7 @@ class DatabaseCondition implements QueryConditionInterface, Countable { } if ($operator['use_value']) { foreach ($condition['value'] as $value) { - $placeholder = ':db_condition_placeholder_' . $connection->getNextPlaceholder(); + $placeholder = ':db_condition_placeholder_' . $next_placeholder++; $arguments[$placeholder] = $value; $placeholders[] = $placeholder; }