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

Nic*_*k.h 9 drupal drupal-6 drupal-fapi

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

Sid*_*iya 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
Run Code Online (Sandbox Code Playgroud)

  • +1 - 这将是正确的API函数.关于性能,`user_load()`不使用像`node_load()`这样的静态缓存,所以如果在页面循环期间经常进行该调用,那么_might_可以更好地进行自定义查询. (4认同)
  • 要获取uid,这是一个非常缓慢的方法,因为它涉及实现hook_user的所有模块创建未知数量的查询. (2认同)
  • 当他自己问他是否应该进行数据库查询时,我相信他能够做到这一点.毕竟它并不复杂. (2认同)

Wil*_*ong 10

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

$user = user_load_by_name($username);
$user_id = $user->uid;
Run Code Online (Sandbox Code Playgroud)

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


Jos*_*oon 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;
}
Run Code Online (Sandbox Code Playgroud)

注意:此代码已修订且输入已转义,因此代码不会以任何方式危险.