看到有人需要,我就写个文章吧,希望达到抛砖引玉的目的。
刚看到的时候就觉得不简单,做的过程中更是觉得不简单,牵涉的表太多了,真正修改uid是个比较麻烦的活,不过也就更新几个表的uid就可以了。
我用Discuz! 4.1.0严格测试通过
我找了一下,几个常用的与会员uid有关系的表和字段如下
表名 字段名(没有写的就是uid)
cdb_access
cdb_adminsessions
cdb_banned id
cdb_blogcaches
cdb_buddys
cdb_creditslog
cdb_favorites
cdb_memberfields
cdb_members
cdb_moderators
cdb_modworks
cdb_onlinetime
cdb_orders
cdb_paymentlog
cdb_posts authorid
cdb_promotions
cdb_ratelog
cdb_threads authorid
cdb_threadsmod
cdb_validating
所以,如果要修改一个会员的uid,那么按照这样的操作后台修改数据库。
我这里假设以前的uid为3,要修改成30
那么后台升级数据库是这样升级
复制内容到剪贴板
代码:
UPDATE `cdb_access` SET `uid`=30 WHERE `uid`=3;
UPDATE `cdb_adminsessions` SET `uid`=30 WHERE `uid`=3;
UPDATE `cdb_banned` SET `id`=30 WHERE `id`=3;
UPDATE `cdb_blogcaches` SET `uid`=30 WHERE `uid`=3;
UPDATE `cdb_buddys` SET `uid`=30 WHERE `uid`=3;
UPDATE `cdb_creditslog` SET `uid`=30 WHERE `uid`=3;
UPDATE `cdb_favorites` SET `uid`=30 WHERE `uid`=3;
UPDATE `cdb_memberfields` SET `uid`=30 WHERE `uid`=3;
UPDATE `cdb_members` SET `uid`=30 WHERE `uid`=3;
UPDATE `cdb_moderators` SET `uid`=30 WHERE `uid`=3;
UPDATE `cdb_modworks` SET `uid`=30 WHERE `uid`=3;
UPDATE `cdb_onlinetime` SET `uid`=30 WHERE `uid`=3;
UPDATE `cdb_orders` SET `uid`=30 WHERE `uid`=3;
UPDATE `cdb_paymentlog` SET `uid`=30 WHERE `uid`=3;
UPDATE `cdb_posts` SET `authorid`=30 WHERE `authorid`=3;
UPDATE `cdb_promotions` SET `uid`=30 WHERE `uid`=3;
UPDATE `cdb_ratelog` SET `uid`=30 WHERE `uid`=3;
UPDATE `cdb_threads` SET `authorid`=30 WHERE `authorid`=3;
UPDATE `cdb_threadsmod` SET `uid`=30 WHERE `uid`=3;
UPDATE `cdb_validating` SET `uid`=30 WHERE `uid`=3;