2016-11-20 36 views
-1

我正在尝试查找用户输入的用户名是否已被其他用户使用,但似乎无法正常工作。这是代码。我不知道还有什么要说的。尝试查找用户名是否已被使用

require 'database.php'; 

    $password = $_POST['password']; 
    $fname = $_POST['fname']; 
    $lname = $_POST['lname']; 
    $username = $_POST['username']; 
    $email = $_POST['email']; 

    $message = ''; 
    if ($password === ""){ 
     $message = "<div class='errormsg'>Oops! Must've missed a spot!</div>"; 
    } 
    else if ($fname === ""){ 
     $message = "<div class='errormsg'>Oops! Must've missed a spot!</div>"; 
    } 
    else if ($lname === ""){ 
     $message = "<div class='errormsg'>Oops! Must've missed a spot!</div>"; 
    } 
    else if ($email === ""){ 
     $message = "<div class='errormsg'>Oops! Must've missed a spot!</div>"; 
    } 
    else if ($username === ""){ 
     $message = "<div class='errormsg'>Oops! Must've missed a spot!</div>"; 
    } 
    $query = mysql_query("SELECT username FROM users WHERE username='".$username."'"); 

    if (mysql_num_rows($query) != 0) 
    { 
     $message = "<div class='errormsg'>Username already exists!</div>"; 
    } 
+0

启用错误报告并检查您的日志,它会告诉您要查找什么。 'error_porting(E_ALL);''ini_set('display_errors',1);' ['mysql_error'](http://php.net/manual/en/function.mysql-error.php) – Qirel

+2

'mysql_ *'函数从PHP 5.5开始已被弃用(并且在PHP 7中完全删除**),如果可以的话,您应该[停止使用它们](http://stackoverflow.com/q/12859942)。 你应该选择另一个允许你使用[准备语句](http://stackoverflow.com/q/60174/)的API(当处理变量时你应该*),比如'mysqli_ *'或者PDO - 请参阅[选择API](http://php.net/manual/en/mysqlinfo.api.choosing.php)。 – Qirel

+0

您应该首先将您的mysql表中的用户名列作为备份。 – Rasclatt

回答

1

尝试使用此功能,使用该名称来检查现有用户:

function userExists($input) { 
    $count = mysql_query("SELECT COUNT(*) FROM users WHERE username='".$input."'"); 
    if ($count > 0) $output = "User already exists"; 
    return $output; 
} 

,您可以尝试这样那就要检查一下:

if (userExists($username)) { ... } 

但考虑停止使用mysql_因为它已被弃用。