我的代码有点困难。
我正在练习,并希望得到以下内容。
在用户注册之前,我想检查用户名是否存在,如果存在,则将名称增加一个。
所以我的逻辑就像这样。用户提供他/她的姓名,根据该用户名生成用户名。
功能
function unique_name($first_name, $last_name) {
$username = strtolower($first_name.'.'.$last_name)
$check = mysqL_query(" SELECT username WHERE username = '".$username."' ");
if(count($check == 1)) {
$i = 2;
foreach($check as $user) {
return $user['username'].$i;
$i++;
}
} else {
return $username;
}
}
$username = unique_name($_POST['first_name'], $_POST['last_name']);
// saveing the increased username
所以实际上脚本应该检查生成的唯一用户名是否会在exsits增加时出现,并且即使它存在一个数字也会增加它
示例
汤姆安德森报名,用户名将是tom.anderson,保存为汤姆安德森第二个汤姆安德森注册,用户名将是tom.anderson,它已经存在,保存为新的tom.anderson2。
第三个用户注册他也是汤姆安德森,用户名tom.anderson *存在两次,增加到tom.anderson3。
所以我没有检查用户是否存在并保存它的问题,我的问题是,如果存在,如何增加每个用户名?
我不是要求任何人为我写这个我正在寻找提示
谢谢
修改
感谢您的回复,但这不起作用
if(count($check) == 1) {
$i = 2;
foreach($check as $user) {
return $user['username'].count($check);
$i++;
}
} else {
return $username;
}
这只检查用户名没有数字,所以如果用户名tom.anderson存在,它会增加到tom.anderson1但是如果tom.anderson1也存在则不会增加到tom.anderson2
答案 0 :(得分:3)
你能否只是追加返回行的count
,除非它是0?
if(count($check) > 0) {
return $user['username'].count($check);
} else {
return $username;
}
更改SQL:
" SELECT username WHERE username LIKE '".$username."%' "
答案 1 :(得分:0)
尝试这样做
if(count($check) == 1) {
$i = 2;
foreach($check as $user) {
return $user['username'].count($check);
$i++;
}
} else {
return $username;
}
答案 2 :(得分:0)
您可以在用户表中添加新字段,并将其命名为base_username。 它们使用给定的用户名获取计数行,并在找到的计数上增加每个用户名 像这样的东西
`function unique_name($first_name, $last_name) { $unique_name = $username = strtolower($first_name.'.'.$last_name) $cnt = get_row(" SELECT COUNT(*) from `users` WHERE base_username = '".$username."' LIMIT 1 "); if($cnt){ $unique_name = $username . $cnt + 1; } return $unique_name; }`