使用MySQL替换用户名的最佳方法

时间:2011-06-07 18:07:35

标签: php mysql replace username

我正在开发一个PHP网站,它现在设置了自己的状态和墙系统(分别类似于twitter和facebook)。我正试图让用户可以在以后更改用户名,任何提及用户的状态或挂帖(如“@woo hi!”)都将替换为新的用户名。

我已尝试在MySQL中使用REPLACE查询,但显然我不能只用'newusername'替换'username',因为如果用户名为@w的用户将其用户名更改为@f,那么其他人的帐户使用用户名@woo将成为@foo。我的漂移?

我认为我的选择是基本上创建我自己的格式来保存状态/墙上帖子,用@woo替换用户名@woo。 (或任何表示用户名结尾的内容),但我很好奇是否有其他人对此事有不同的想法,或者有人知道让REPLACE查询为我做这件事(就像让它扫描一样的方法)单词,这样@w!= @woo。我很想听听你的想法。

编辑:

我想出了我要做的事情,并且正在为其他人未来的参考更新此内容。我决定用#@ usernames#替换状态/墙上帖子中的所有@usernames并将其保存在数据库中。所以现在我可以使用MySQL的简单REPLACE查询替换状态/墙上帖中的所有用户名提及,并且不会出现歧义问题(@w在我的数据库中变为#@ w#,这意味着更改用户名@ w(#@ w#)到@f(#@ f#)不会改变#@ woo#到#@ foo#。当然现在在帖子中显示用户名时,我必须通过“unformat”运行内容功能在开始和结束时剥离了#,但这并不算太糟糕。

1 个答案:

答案 0 :(得分:1)

您可以设计数据库以存储有关每个状态/帖子的其他数据,例如,帖子中提到的用户的所有用户ID列表。然后,很容易执行目标搜索并替换为:

  • 找到提及用户通过加入其ID更改其姓名的所有帖子
  • 仅使用$oldname替换$newname

你可能仍然有一点点歧义(单个帖子中有多个提及),但你应该能够编写一个标识$oldname 而非子字符串的正则​​表达式$oldname