summaryrefslogtreecommitdiff
path: root/includes/database/query.inc
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2009-11-23 22:31:42 +0000
committerDries Buytaert <dries@buytaert.net>2009-11-23 22:31:42 +0000
commita902f664d9209f81903619913d754065461523a7 (patch)
tree669be95d475b90ca598e301b41db9026847d834a /includes/database/query.inc
parent226341242bf4e7ea16ec7d6f2f81091464207318 (diff)
downloadbrdo-a902f664d9209f81903619913d754065461523a7.tar.gz
brdo-a902f664d9209f81903619913d754065461523a7.tar.bz2
- Patch #564852 by justinrandell, mcarbone, Crell: fixed subselect in WHERE condition with multiple placeholders cause invalid/duplicate placeholders.
Diffstat (limited to 'includes/database/query.inc')
-rw-r--r--includes/database/query.inc7
1 files changed, 5 insertions, 2 deletions
diff --git a/includes/database/query.inc b/includes/database/query.inc
index 993275749..9205fe4a2 100644
--- a/includes/database/query.inc
+++ b/includes/database/query.inc
@@ -925,6 +925,7 @@ class DeleteQuery extends Query implements QueryConditionInterface {
$query = 'DELETE FROM {' . $this->connection->escapeTable($this->table) . '} ';
if (count($this->condition)) {
+
$this->condition->compile($this->connection, $this);
$query .= "\nWHERE " . $this->condition;
}
@@ -1234,6 +1235,8 @@ class DatabaseCondition implements QueryConditionInterface, Countable {
}
else {
// It's a structured condition, so parse it out accordingly.
+ // Note that $condition['field'] will only be an object for a dependent
+ // DatabaseCondition object, not for a dependent subquery.
if ($condition['field'] instanceof QueryConditionInterface) {
// Compile the sub-condition recursively and add it to the list.
$condition['field']->compile($connection, $queryPlaceholder);
@@ -1257,7 +1260,8 @@ class DatabaseCondition implements QueryConditionInterface, Countable {
$operator += $operator_defaults;
$placeholders = array();
- if ($condition['value'] instanceof SelectQuery) {
+ if ($condition['value'] instanceof SelectQueryInterface) {
+ $condition['value']->compile($connection, $queryPlaceholder);
$placeholders[] = (string)$condition['value'];
$arguments += $condition['value']->arguments();
}
@@ -1275,7 +1279,6 @@ class DatabaseCondition implements QueryConditionInterface, Countable {
}
}
$condition_fragments[] = ' (' . $condition['field'] . ' ' . $operator['operator'] . ' ' . $operator['prefix'] . implode($operator['delimiter'], $placeholders) . $operator['postfix'] . ') ';
-
}
}
}