php如果数据库中存在用户名,则将用户名增加1

时间:2013-02-19 14:09:49

标签: php mysql

我的代码有点困难。

我正在练习,并希望得到以下内容。

在用户注册之前,我想检查用户名是否存在,如果存在,则将名称增加一个。

所以我的逻辑就像这样。用户提供他/她的姓名,根据该用户名生成用户名。

功能

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

3 个答案:

答案 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;
}`