Php 如何避免数据库中的重复用户名
我想用新用户名检查数据库中的用户名。 如果找到用户名,请至少按数字重新生成用户名 或者在名字和姓氏后面加上一个漂亮的字符 并再次检查新生成的用户名是否也不存在 如果不存在,请运行要插入的查询 我想要这个的原因是因为我不想要重复的用户名 在数据库中 我试过了,但不管用 请帮忙Php 如何避免数据库中的重复用户名,php,Php,我想用新用户名检查数据库中的用户名。 如果找到用户名,请至少按数字重新生成用户名 或者在名字和姓氏后面加上一个漂亮的字符 并再次检查新生成的用户名是否也不存在 如果不存在,请运行要插入的查询 我想要这个的原因是因为我不想要重复的用户名 在数据库中 我试过了,但不管用 请帮忙 <?php //check if username already exists function checkusername($username){ global $dbc_conn, $table
<?php
//check if username already exists
function checkusername($username){
global $dbc_conn, $table_name;
//CHECK IF A USERNAME EXISTS
$query = mysqli_query($dbc_conn,"SELECT COUNT(username) FROM $table_name WHERE username ='{$username}'");
$rows = mysqli_fetch_row($query);
if(count($rows) > 0){
return false;
}else{
return true;
}
}
//This function create new account
function signup($fname, $lname , $regemail , $regpassword , $gender , $school , $day,$month,$year,$school){
global $dbc_conn, $table_name;
//CHECK IF EMAIL ALREADY EXISTS
$query = mysqli_query($dbc_conn,"SELECT Email FROM $table_name WHERE Email ='{$regemail}'");
if (mysqli_num_rows($query) > 0 ){
$error ="<div class='error'><strong> <i class='fa fa-exclamation-triangle'></i> </strong>Sorry, It looks like you already have an account with us.</div>";
}else{
$username = strtolower($fname.$lname);
//Check if username is do not exists, and if it exist
while(checkusername($username)){
//INSERT INTO DATABASE
$query = "INSERT INTO users
(username,FirstName,LastName,Email,
Password,Month,Day,Year,Gender,cell_group)
VALUES(?,?,?,?,?,?,?,?,?,?)";
//PREPARE QUERY
$prepare = $dbc_conn ->prepare($query);
//BIND QUERY
$prepare->bind_param("ssssssisis",$username,$fname,
$lname , $regemail ,
md5($regpassword) , $gender ,
$school , $day,
$month,$year,$school);
//execute requery
if($prepare->execute()){
//SET SESSION
$_SESSION['usigh-ses'] = mysqli_insert_id($dbc_conn);
header("location:gettingstarted.php");
//close connection
mysqli_close($dbc_conn);
exit;
};
}
}
}
?>
请详细说明它是如何“不起作用”的。将其作为唯一键,然后捕获异常因为您使用COUNT,将始终返回一行,但如果没有匹配的记录,则值将为0。最好只选择并检查是否返回了任何行。将代码划分为多个函数,以便更容易理解。另外,我认为您的select语句在这里打破了$table_name中的select COUNT(username),其中username='{$username}'“
是否要在此处使用花括号?添加唯一密钥将更好地确保用户名不会重复,但是您仍然需要处理代码中的逻辑,这样您的查询就不会神秘地失败。请详细说明它是如何“不起作用”的。将它作为唯一键,然后捕获例外情况使用COUNT时,将始终返回一行,但如果没有匹配的记录,则值将为0。最好只选择并检查是否返回了任何行。将代码划分为多个函数,以便更容易理解。另外,我认为您的select语句在这里打破了$table_name中的select COUNT(username),其中username='{$username}'“
您想在这里放上花括号吗?添加一个唯一的密钥可以更好地保证用户名永远不会被复制,但您仍然需要处理代码中的逻辑,这样您的查询就不会神秘地失败。”