0

わかりましたので、このコードを持っています。登録フォーム用ですが、ユーザー名が既に使用されているかどうかを確認することはできませんか? 誰かが助けてくれれば、「ユーザー名は既に使用されています」を返すのではなく、データベースに同じユーザー名を再度作成するだけです。

$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>";
    }
4

2 に答える 2

0
$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());
于 2013-10-12T02:27:20.080 に答える