gpt4 book ai didi

php - 您如何在 PHP 中向用户建议唯一的用户名?

转载 作者:可可西里 更新时间:2023-11-01 06:30:35 25 4
gpt4 key购买 nike

假设某人想要的用户名已被占用,那么我希望系统建议一个可用用户名列表,比如 5 个建议。

现在,我可以根据已有数据的排列组合生成多个用户名,例如他们的姓名、生日等。但是我如何确保这些生成的用户名可用呢?我的意思是,如果对于每个生成的用户名,我都必须查询数据库以检查可用性,在最坏的情况下,这可能会变成一个无限循环。

有什么想法吗?

最佳答案

我怀疑这个问题是基础问题,所以我将提供一个简单的例子:

<?php

// Untested code and only one of the many possible ideas
$suggestions = array(
'foobar' => TRUE,
'foo1974' => TRUE,
'foo37' => TRUE,
'drfoo' => TRUE,
'mrfoo' => TRUE,
);


$params = $placeholders = array();
foreach(array_keys($suggestions) as $position => $username){
$params['u' . $position] = $username;
$placeholders[] = ':u' . $position;
}
$sql = 'SELECT username
FROM user
WHERE username IN (' . implode(', ', $placeholders) . ')';

$res = $conn->prepare($sql);
$res->execute($params);
while( $row = $res->fetch(PDO::FETCH_ASSOC) ){
$suggestions[ $row['username'] ] = FALSE;
}


foreach($suggestions as $username => $available){
if($available){
// ...
}
}

编辑:

提供无限可用名称列表的唯一方法是使用一个非常简单的规则,例如添加一个连续的数字。在这种情况下,您可以尝试这样的操作:

SELECT username
FROM user
WHERE username REGEXP '^foo[0-9]+'

...然后:

$username = 'foo';

$suggestions = array();
$count = 0;
$names_left = 5;
while($names_left>0){
$count++;

if( !in_array($username . $count, $names_taken) ){
$suggestions[] = $username . $count;
$names_left--;
}
}

关于php - 您如何在 PHP 中向用户建议唯一的用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7089018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com