diff --git a/includes/database.inc b/includes/database.inc
index fc6d9d75498b9a96dd3648b46c485b4816917f1e..06d150d309566c8196a71b758d17e20f4633566e 100644
--- a/includes/database.inc
+++ b/includes/database.inc
@@ -60,17 +60,24 @@ function db_prefix_tables($sql) {
   global $db_prefix;
 
   if (is_array($db_prefix)) {
-    $prefix = $db_prefix['default'];
-    foreach ($db_prefix as $key => $val) {
-      if ($key !== 'default') {
+    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));
       }
+      return strtr($sql, array('{' => $db_prefix['default'], '}' => ''));
+    }
+    else {
+      foreach ($db_prefix as $key => $val) {
+        $sql = strtr($sql, array('{'. $key. '}' => $val. $key));
+      }
+      return strtr($sql, array('{' => '', '}' => ''));
     }
   }
   else {
-    $prefix = $db_prefix;
+    return strtr($sql, array('{' => $db_prefix, '}' => ''));
   }
-  return strtr($sql, array('{' => $prefix, '}' => ''));
 }
 
 /**