php - 如果重复,如何在用户名末尾添加额外的数字

标签 php

很难解释,让我举个例子。

  1. 如果用户名 foo 已经存在于 MySQL 中,我希望 php 脚本允许它,但必须是 foo1
  2. 如果 foo1 也存在,脚本将生成用户名 foo2
  3. 如果 foo2 存在则变为 foo3

怎么做出来的?

Col. Shrapnel 自然增量这似乎更明智。就像 Windows 中的“新建文件夹 (3)”一样

最佳答案

首先,锁定表,这样其他表就不会同时写入它。然后做这样的事情:

$name = 'foo';
$first_name = $name;
$i = 0;
do {
  //Check in the database here
  $exists = exists_in_database($name);
  if($exists) {
    $i++;
    $name = $first_name . $i;
  }
}while($exists);
//save $name

另一种方法是选择表中所有以“foo”开头并以数字结尾的名称,然后找到最大的数字。这可以在 SQL 中完成。

第一种方法更适合冲突风险很小的用例,因为模式匹配可能很慢,但如果冲突很多,则后者可能更好。

关于php - 如果重复,如何在用户名末尾添加额外的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4498886/

相关文章:

php - 导入时,二进制 IP 地址上的 API 调用显示奇怪的格式

php - 如何使用 PHP 回显基于 MySQL 数据库的动态 html 片段?

php - 如何在 SilverStripe 中安装和使用模块

php - 如何检查是否在 Doctrine2 存储库中找到了对象?

php - 查询 PHP 信号量而不阻塞?

PHP session 管理,使用Cookie统计用户

java - 如何使用 PHP 执行 java -jar 文件,并将 .jar 创建的文件加载到服务器?

java - 一个进程调用期间的多个标准输入/标准输出操作

php - 哪个 php 版本支持以下语法

php - 将 MYSQL 查询限制为 1 个结果 fetch_assoc() 停止失败