summaryrefslogtreecommitdiff
path: root/includes/database/mysql
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2009-06-05 16:55:45 +0000
committerDries Buytaert <dries@buytaert.net>2009-06-05 16:55:45 +0000
commit9079d78481c6148b9aca36f90e8bf34ffb01f03d (patch)
tree6edee9c1a86773f3c0d6ea89d2170d375a8f1d18 /includes/database/mysql
parent41204a5a829d07a34305cf97a9a0bf3937b5ebb7 (diff)
downloadbrdo-9079d78481c6148b9aca36f90e8bf34ffb01f03d.tar.gz
brdo-9079d78481c6148b9aca36f90e8bf34ffb01f03d.tar.bz2
- Patch #481288 by Berdir: add support for INSERT INTO ... SELECT FROM ... queries.
Diffstat (limited to 'includes/database/mysql')
-rw-r--r--includes/database/mysql/query.inc8
1 files changed, 6 insertions, 2 deletions
diff --git a/includes/database/mysql/query.inc b/includes/database/mysql/query.inc
index b2dbae04c..84caf0386 100644
--- a/includes/database/mysql/query.inc
+++ b/includes/database/mysql/query.inc
@@ -22,12 +22,12 @@ class InsertQuery_mysql extends InsertQuery {
throw new PDOException('You may not specify the same field to have a value and a schema-default value.');
}
- if (count($this->insertFields) + count($this->defaultFields) == 0) {
+ if (count($this->insertFields) + count($this->defaultFields) == 0 && empty($this->fromQuery)) {
return NULL;
}
// Don't execute query without values.
- if (!isset($this->insertValues[0]) && count($this->insertFields) > 0) {
+ if (!isset($this->insertValues[0]) && count($this->insertFields) > 0 && empty($this->fromQuery)) {
return NULL;
}
@@ -56,6 +56,10 @@ class InsertQuery_mysql extends InsertQuery {
// Default fields are always placed first for consistency.
$insert_fields = array_merge($this->defaultFields, $this->insertFields);
+ if (!empty($this->fromQuery)) {
+ return "INSERT $delay INTO {" . $this->table . '} (' . implode(', ', $insert_fields) . ') ' . $this->fromQuery;
+ }
+
$query = "INSERT $delay INTO {" . $this->table . '} (' . implode(', ', $insert_fields) . ') VALUES ';
$max_placeholder = 0;