有没有办法从Drupal的用户名获取uid?

时间:2010-10-04 15:06:20

标签: drupal drupal-6 drupal-fapi

在Drupal中是否有任何核心功能可以从用户名获取uid? 或者我应该执行数据库查询? 我的字段是一个文本字段,其中“#autocomplete_path”等于“user / autocomplete”

5 个答案:

答案 0 :(得分:11)

您可以使用user_load功能。见http://api.drupal.org/api/function/user_load/6

特别参见http://api.drupal.org/api/function/user_load/6#comment-6439

所以你会做这样的事情:

// $name is the user name
$account = user_load(array('name' => check_plain($name)));
// uid is now available as $account->uid

答案 1 :(得分:10)

不知怎的,我无法使查询工作,但我发现了这个:

$user = user_load_by_name($username);
$user_id = $user->uid;

请参阅:http://api.drupal.org/api/drupal/modules%21user%21user.module/function/user_load_by_name/7

答案 2 :(得分:5)

用户加载功能非常繁重,会耗尽更多资源并返回超出要求的更多数据。这对您来说是一个很好的小功能:

function get_uid($username)
{    
    // Function that returns the uid based on the username given
    $user = db_fetch_object(db_query("SELECT uid FROM users WHERE name=':username'", array(":username" => $username)));

    return $user->uid;
}

注意:此代码已修订且输入已转义,因此代码无论如何都不会有危险。

答案 3 :(得分:2)

您可以使用全局$user变量获取有关已登录用户的所有信息。

代码是:

<?php
global $user;
$uid = $user->uid;
echo $uid;
?>

答案 4 :(得分:0)

没有现成的API函数,这不是我所知道的。但如果你需要几个地方,你可以自己做。查询数据库的uid应该非常简单和直接。