php - 用 MySQL 替换用户名的最佳方法

标签 php mysql replace

我正在用 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”来运行内容去掉开头和结尾的 # 的函数,但这还不错。

最佳答案

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

  • 找到所有提及用户更改姓名的帖子通过加入他们的 id
  • 仅在那些帖子中用 $newname 替换 $oldname

你可能仍然有一点歧义(在一个帖子中多次提到),但你应该能够编写一个正则表达式来标识 $oldname 而不是子字符串$oldname

关于php - 用 MySQL 替换用户名的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6269682/

相关文章:

python - 替换字符串中的子字符串

javascript - 表单不更新动态 html 表的行数

PHP:打印关联数组

mysql - 如何使用触发器检查mysql中的数据行?

php - 如何显示所有id_following

javascript - 如何复制 `<div contentEditable="true">` to ` &lt;textarea&gt;` 而不将其删除?

java - 使用 Java 中的 PDFbox 替换或删除 PDF 中的文本

php - WooCommerce 的 WCFM 市场 - 忽略当前产品

javascript - 如何在错误请求时显示警报,但在成功时重定向?

PHP - MySQL INSERT 查询不适用于表单操作