Index: includes/database.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/database.inc,v retrieving revision 1.85 diff -u -r1.85 database.inc --- includes/database.inc 30 Nov 2007 12:19:10 -0000 1.85 +++ includes/database.inc 16 Dec 2007 15:46:04 -0000 @@ -290,30 +290,30 @@ $new = "WHERE $where "; } $new = " $join $new"; - if (strpos($query, 'WHERE')) { - $query = str_replace('WHERE', $new .'AND (', $query); + if ($pos = strrpos($query, 'WHERE')) { + $query = substr($query, 0, $pos) . $new .'AND ('. substr($query, $pos + 5); $insert = ') '; } else { $insert = $new; } - if (strpos($query, 'GROUP')) { + if (strpos($query, 'GROUP', $pos)) { $replace = 'GROUP'; } - elseif (strpos($query, 'HAVING')) { + elseif (strpos($query, 'HAVING', $pos)) { $replace = 'HAVING'; } - elseif (strpos($query, 'ORDER')) { + elseif (strpos($query, 'ORDER', $pos)) { $replace = 'ORDER'; } - elseif (strpos($query, 'LIMIT')) { + elseif (strpos($query, 'LIMIT', $pos)) { $replace = 'LIMIT'; } else { $query .= $insert; } if (isset($replace)) { - $query = str_replace($replace, $insert . $replace, $query); + $query = substr($query, 0, $pos) . str_replace($replace, $insert . $replace, substr($query, $pos)); } }