按元数据选择用户的SQL

时间:2011-10-11 作者:Gyro

您好,我正在尝试使用以下sql语句选择仅具有特定角色的用户。。。

SELECT DISTINCT ID, u.user_login, u.user_nicename, u.user_email
FROM wp_users u, wp_usermeta m
WHERE m.meta_key = \'wp_capabilities\'
AND m.meta_value LIKE \'%supplier%\'
ORDER BY u.user_registered
然而,它却把整张桌子都弄脏了。我做错了什么?

PS这需要是一个SQL选择,因为我正在myphpadmin中执行此操作,以将数据导出到csv。

提前感谢!

2 个回复
最合适的回答,由SO网友:EAMann 整理而成

仔细检查SQL语法。听起来你想做一个JOIN ... 但您没有正确构建查询。

它应该更像:

SELECT u.ID, u.user_login, u.user_nicename, u.user_email
FROM $wpdb->users u
INNER JOIN $wpdb->usermeta m ON m.user_id = u.ID
WHERE m.meta_key = \'wp_capabilities\'
AND m.meta_value LIKE \'%supplier%\'
ORDER BY u.user_registered
您必须告诉查询您是如何将用户元与用户关联的。

还请注意,我正在使用$wpdb-> 而不是wp_. 如果您希望在数据库前缀不是“wp”的站点上的插件中使用此查询,那么这一点很重要但是,如果您直接在SQL中运行东西,则应该切换回原来的状态。

SO网友:kaiser

core中内置了一个(查询)类:

new WP_User_Query;

// Example
$all_subscribers = new WP_User_Query( array( \'role\' => \'subscriber\' ) );
这样就可以在用户对象中循环:

// Example
foreach ( $all_subscribers as $subscriber )
{
    echo $subscriber->display_name;

    // Check object:
    var_dump( $subscriber );
}
有关进一步的示例,或通过其他字段查询用户,请参考codex。

结束

相关推荐

AJAX wp-MySQL运行太慢

我做了一个ajax函数,它返回所有以特定字母开头的帖子,假设用户单击字母a,那么所有以字母a开头的帖子都会显示出来,无论我如何成功地运行此函数,但前提是我使用普通mysql,但我想使用wp mysql,我的代码将代表我;)echo $_GET[\'letter\']; $getLetter = $_GET[\'letter\']; global $wpdb; global $post; $result = $wpdb->get_results(\'SELEC