--- includes/database.inc.orig	2007-06-18 17:07:18.652167463 -0500
+++ includes/database.inc	2007-06-18 17:07:22.652144949 -0500
@@ -59,24 +59,43 @@
 function db_prefix_tables($sql) {
   global $db_prefix;
 
+  $pattern = '/ \{([^}]*)\}/';
   if (is_array($db_prefix)) {
     if (array_key_exists('default', $db_prefix)) {
       $tmp = $db_prefix;
       unset($tmp['default']);
       foreach ($tmp as $key => $val) {
-        $sql = strtr($sql, array('{'. $key. '}' => $val. $key));
+        $pattern = '/ \{'.$key.'\}/';
+        # print "0 pattern = $pattern<br>\n";
+        $replace = " ".$val.$key;
+        # print "0 sql = $sql<br>\n";
+        $sql = preg_replace($pattern, $replace, $sql);
+	# print "1 sql = $sql<br>\n";
       }
-      return strtr($sql, array('{' => $db_prefix['default'], '}' => ''));
+      $pattern = '/ \{([^}]*)\}/';
+      $replace = ' '.$db_prefix['default'].'$1';
+      $sql = preg_replace($pattern, $replace, $sql);
+      # print "2 sql = $sql<br>\n";
+      return $sql;
     }
     else {
       foreach ($db_prefix as $key => $val) {
-        $sql = strtr($sql, array('{'. $key. '}' => $val. $key));
+        $replace = ' '.$val.$key;
+        $pattern = '/ \{'.$key.'\}/';
+        $sql = preg_replace($pattern, $replace, $sql);
+	# print "3 sql = $sql<br>\n";
       }
-      return strtr($sql, array('{' => '', '}' => ''));
+      $replace = ' $1';
+      $sql = preg_replace($pattern, $replace, $sql);
+      # print ("4 sql = $sql<br>\n");
+      return $sql;
     }
   }
   else {
-    return strtr($sql, array('{' => $db_prefix, '}' => ''));
+    $replace = ' '.$db_prefix.'$1';
+    $sql = preg_replace($pattern, $replace, $sql);
+    # print("5 sql = $sql<br>\n");
+    return $sql;
   }
 }
 
@@ -191,12 +210,15 @@
 function db_query($query) {
   $args = func_get_args();
   array_shift($args);
-  $query = db_prefix_tables($query);
   if (isset($args[0]) and is_array($args[0])) { // 'All arguments in one array' syntax
     $args = $args[0];
   }
   _db_query_callback($args, TRUE);
+#  print "0 query=$query<br>\n";
   $query = preg_replace_callback(DB_QUERY_REGEXP, '_db_query_callback', $query);
+#  print "1 query=$query<br>\n";
+  $query = db_prefix_tables($query);
+#  print "2 query=$query<br>\n";
   return _db_query($query);
 }
 
