SQL查询 - 将值添加到多个唯一ID中

时间:2014-03-05 12:49:37

标签: mysql wordpress sql-insert

我有一个Wordpress网站,需要导入9,000多个用户才能设置目录列表。我从现有的MySQL(非wordpress)数据库导入它们,导入的一切都很好。用户名,密码和显示名称(MD5哈希,但我测试过,WP会在首次登录时将密码更改为phpass。)

事情是......它们都是以NONE的用户角色导入的。我需要将其更改为Subscriber。现在,我可以进入我的phpMyAdmin,我可以在wp_usermeta表中看到字段行值'wp_capabilities'。我可以看到:

admin accounts = a:1:{s:13:"administrator";b:1;}

Subscribers = a:1:{s:10:"subscriber";b:1;}

我还可以看到每个user_id都输入了很多值。问题是?如何编写批量MySQL命令以将值wp_capabilites='a:1:{s:10:"subscriber";b:1;}'添加到每个user_id中,除了1,2和3之外。新导入的用户?

先谢谢!

3 个答案:

答案 0 :(得分:0)

试试这个:

UPDATE wp_usermeta SET wp_capabilities="a:1:{s:10:'subscriber';b:1;}"  
WHERE user_id not in(1,2,3);

UPDATE wp_usermeta SET wp_capabilities="a:1:{s:10:'subscriber';b:1;}"  
WHERE user_id > 3;

答案 1 :(得分:0)

我实际上最终使用了这个查询:

`UPDATE wp_usermeta SET meta_key = 'wp_capabilities', meta_value = 'a:1:{s:10:"subscriber";b:1;}'  
WHERE user_id > 3

由于该表没有导入联系人的数据,因此对于除管理员帐户以外的所有记录,这是meta_key和meta_value下的唯一值。

有人能看出为什么这会不正确吗?

谢谢!

答案 2 :(得分:0)

    function update_usr_meta(){
    $users = get_users();
    if( !empty($users) && count($users) > 0 ) {
        foreach( $users as $u ) {
            if( $u->ID > 3 ) {
                update_usermeta($u->ID, 'wp_capabilities', "a:1:{s:10:'subscriber';b:1;}");
            }
        }
    }
}
add_action('init',  update_usr_meta);

运行此功能一次,所有用户都将更新。希望这会有所帮助。