Index: database.inc
===================================================================
--- database.inc	(revision 165)
+++ database.inc	(working copy)
@@ -272,27 +272,27 @@
       $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 ($pos = strpos($query, 'GROUP', $pos)) {
       $replace = 'GROUP';
     }
-    elseif (strpos($query, 'ORDER')) {
+    elseif ($pos = strpos($query, 'ORDER', $pos)) {
       $replace = 'ORDER';
     }
-    elseif (strpos($query, 'LIMIT')) {
+    elseif ($pos = 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));
     }
   }
 
