Adding those TABLE_PREFIX's in front of the table.fieldname is not wrong, but like Buffy suggested using ...user AS user take away a lot of those prefixes. Also $variable is not cleaned and could lead to SQL injections.
PS You want to select from userfield and try to get the corresponding username, so userfield should be your primary table with a left join on use.
PHP Code:
$getusers = $db->query_read("
SELECT user.username, userfield.field66
FROM " . TABLE_PREFIX . "userfield AS userfield
LEFT JOIN " . TABLE_PREFIX . "user AS user ON (user.userid=userfield.userid)
WHERE userfield.field66 = '" . $vbulletin->db->escape_string($variable) . "'
");
$allusers = array();
while ($user = $db->fetch_array($getusers))
{
// code will run for every result returned
// $user contains your resultset for each result returned
// (i think this is what you want?)
$allusers[] = $user;
}
// $allusers is now an array containing each result