diff --git a/drupalvb.inc.php b/drupalvb.inc.php
index 3a5da68..e5e5f75 100644
--- a/drupalvb.inc.php
+++ b/drupalvb.inc.php
@@ -264,7 +264,7 @@ function drupalvb_update_user($account, $edit) {
   if (isset($edit['userid'])) {
     $userid = $edit['userid'];
   }
-  else {
+  else if (!$userid = drupalvb_get_userid($account->uid)) {
     $userid = drupalvb_db_query("SELECT userid FROM {user} WHERE username = :name", array(':name' => drupalvb_htmlspecialchars($account->name)))->fetchField();
   }
   drupalvb_set_mapping($account->uid, $userid);
@@ -298,7 +298,7 @@ function drupalvb_export_drupal_users() {
     if (!drupalvb_create_user($user, (array)$user)) {
       // Username already exists, update email and password only.
       // Case insensitive username is required to detect collisions.
-      $vbuser = drupalvb_db_query("SELECT salt,userid FROM {user} WHERE LOWER(username) = LOWER(:name)", array(':name' => drupalvb_htmlspecialchars($user->name)))->fetchAssoc();
+      $vbuser = drupalvb_db_query("SELECT salt,userid FROM {user} WHERE username = :name", array(':name' => drupalvb_htmlspecialchars($user->name)))->fetchAssoc();
       drupalvb_update_user($user, array_merge((array)$user, $vbuser));
     }
   }
@@ -432,7 +432,8 @@ function drupalvb_get_recent_posts($scope = 'last') {
   global $user;
 
   // Queries the vB user database to find a matching set of user data.
-  $result = drupalvb_db_query("SELECT userid, username, lastvisit FROM {user} WHERE username = :name", array(':name' => drupalvb_htmlspecialchars($user->name)));
+  $userid = drupalvb_get_userid($user->uid);
+  $result = drupalvb_db_query("SELECT userid, username, lastvisit FROM {user} WHERE userid = :userid", array(':userid' => $userid));
 
   // Make sure a user is logged in to get their last visit and appropriate post
   // count.
diff --git a/drupalvb.module b/drupalvb.module
index 6accfb4..c21b991 100644
--- a/drupalvb.module
+++ b/drupalvb.module
@@ -431,14 +431,19 @@ function drupalvb_user_update($edit, $account) {
   global $user;
 
   // Update data if user exists.
-  if ($vbuser = drupalvb_db_query_range("SELECT userid, salt FROM {user} WHERE username = :name", 0, 1, array(":name" => drupalvb_htmlspecialchars($account->name)))->fetchAssoc()) {
+  $userid = drupalvb_get_userid($account->uid);
+  if (!$userid) {
+    $userid = drupalvb_db_query_range("SELECT userid FROM {user} WHERE username = :name", 0,1, array(":name" => drupalvb_htmlspecialchars($account->name)))->fetchField();
+  }
+  
+  if ($userid) {
     // Merge current username, salt, and finally edited values into one array,
     // so usernames may be altered (if allowed).
-    drupalvb_update_user($account, array_merge(array('name' => $account->name), $vbuser, $edit));
+    drupalvb_update_user($account, array_merge(array('name' => $account->name, "userid" => $userid)));
   }
   // If not, create a new user in vB.
   else {
-    if (!$vbuser['userid'] = drupalvb_create_user($account, array_merge(array('name' => $account->name), $edit))) {
+    if (!$userid = drupalvb_create_user($account, array_merge(array('name' => $account->name), $edit))) {
       // Indicates duplicate username (should not happen).
       return;
     }
@@ -446,7 +451,7 @@ function drupalvb_user_update($edit, $account) {
 
   // Prevent overriding cookies of administrators.
   if ($account->uid == $user->uid) {
-    drupalvb_set_login_cookies($vbuser['userid']);
+    drupalvb_set_login_cookies($userid);
   }
 }
 
@@ -458,7 +463,7 @@ function drupalvb_user_update($edit, $account) {
  */
 function drupalvb_user_delete($account) {
   // If vBulletin user exists, delete user account, session and profile data.
-  if ($userid = drupalvb_db_query("SELECT userid FROM {user} WHERE username = :name", array(":name" => drupalvb_htmlspecialchars($account->name)))->fetchField()) {
+  if ($userid = drupalvb_get_userid($account->uid)) {
     drupalvb_db_query("DELETE FROM {session} WHERE userid = :id", array(":id" => $userid));
     drupalvb_db_query("DELETE FROM {user} WHERE userid = :id", array(":id" => $userid));
     drupalvb_db_query("DELETE FROM {userfield} WHERE userid = :id", array(":id" => $userid));
@@ -922,7 +927,8 @@ function drupalvb_block_user_info() {
     );
   }
   if ($display['pms']) {
-    $vbuser = drupalvb_db_query("SELECT pmtotal, pmunread FROM {user} WHERE username = :name", array(":name" => drupalvb_htmlspecialchars($user->name)))->fetchAssoc();
+    $userid = drupalvb_get_userid($user->uid);
+    $vbuser = drupalvb_db_query("SELECT pmtotal, pmunread FROM {user} WHERE userid = :userid", array(":userid" => $userid))->fetchAssoc();
     $rows[] = array(
       l(t('New private messages'), 'drupalvb/pms'),
       (int)$vbuser['pmunread'],
@@ -1171,7 +1177,8 @@ function drupalvb_privatemsg($message, $op) {
     case 'sent':
       // Verify that recipient exists in vB.
       $recipient = user_load($message->recipient);
-      if (!$userid = drupalvb_db_query_range("SELECT userid FROM {user} WHERE username = :name", array(":name" => drupalvb_htmlspecialchars($recipient->name)), 0, 1)->fetchField()) {
+      
+      if (!$userid = drupalvb_get_userid($message->recipient)) {
         if (!$userid = drupalvb_create_user($recipient, (array)$recipient)) {
           // Indicates duplicate username (should not happen).
           return;
