簡體   English   中英

檢查mysql數據庫中是否存在用戶名?

[英]Check if username exists in mysql database?

好的,這個代碼,它的注冊表格,但我無法檢查是否已經使用了用戶名? 所有這一切都是在數據庫中再次創建相同的用戶名,而不是返回“用戶名已被采取”,如果有人可以提供幫助將非常感激。

$checkusernametaken = mysql_query("SELECT FROM users (username) WHERE username=username");
 if(mysql_num_rows($checkusernametaken)>=1)
    {
        echo"Username already exists";
    }
 else
    {
        $sql = "INSERT INTO users(username, password) VALUES(:username, :password)";
        $stmt = $con->prepare( $sql );
        $stmt->bindValue( "username", $this->username, PDO::PARAM_STR );
        $stmt->bindValue( "password", hash("sha256", $this->password . $this->salt), PDO::PARAM_STR );
        $stmt->execute();
        return "Registration Successful Welcome " + $checkusernametaken + "<br/> <a href='index.php'>Login Now</a>";
    }

這是我使用的代碼,我在評論中的每個人的幫助下工作,謝謝大家!

try {
        $con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
        $con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
        $sql = "INSERT INTO users(username, password) VALUES(:username, :password)";

        $stmt = $con->prepare( $sql );
        $stmt->bindValue( "username", $this->username, PDO::PARAM_STR );
        $stmt->bindValue( "password", hash("sha256", $this->password . $this->salt), PDO::PARAM_STR );
        $stmt->execute();
        return "Registration Successful <br/> <a href='index.php'>Login Now</a>";
    }
    catch( PDOException $e ) 
    {
         return "Username Taken <br/> <a href='register.php'>Try Again?</a>";
    }

以下是表格的示例:

CREATE TABLE `users` (
`id` INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
`username` VARCHAR(30) NOT NULL UNIQUE,
`password` VARCHAR(64) NOT NULL
);

現場演示。

最簡單的方法是,如果您更改表以使字段用戶名唯一,這樣如果您嘗試插入相同的用戶名,它將導致重復輸入錯誤,您可以輕松地捕獲這樣:

try
{
    $sql = "INSERT INTO users(username, password) VALUES(:username, :password)";
    $stmt = $con->prepare($sql);
    $stmt->bindValue("username", $this->username, PDO::PARAM_STR);
    $stmt->bindValue("password", hash("sha256", $this->password . $this->salt), PDO::PARAM_STR);
    $stmt->execute();
    return "Registration Successful Welcome {$checkusernametaken}<br/><a href=\"index.php\">Login Now</a>";
}
catch (PDOException $e)
{
    if ($e->getCode() == 1062)
    {
        return "The selected username is not available...";
    }
    else
    {
        // More info at: http://php.net/manual/en/class.pdoexception.php
        return "Handle any other errors here.";
    }
}
$checkusernametaken = mysql_query("SELECT FROM users (username) WHERE username=username");

在這里你應該改為

$checkusernametaken = mysql_query("SELECT * FROM `users` WHERE lcase(`username`) = lcase('".mysql_escape_string($this->username)."')") or die(mysql_error());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM