2014-03-25 100 views
-4

我有一個註冊表單,要求用戶輸入他們的用戶名。檢查我的數據庫中已存在的用戶名(MySQL)

我需要檢查他們輸入的用戶名是否已經存在於我的數據庫中。但下面的代碼不起作用。

<ul class="user"> 
<li class="label">User name </li> 
<li class="field"> 
<input type="text" id="username" name="username" class="required error"/> 
<?php 
    // $username = $_POST['username'];  
    $dbhost = 'localhost:3306'; 
    $dbuser = 'root'; 
    $dbpass = ''; 
    $dbname = 'cast'; 

    $conn = mysql_connect($dbhost, $dbuser, $dbpass, $dbname); 
    if(! $conn) 
    { 
     die('Could not connect: ' . mysql_error()); 
    } 
    else 
    { 
     echo "Connect"; 
    } 

    mysql_select_db('cast'); 
    $query = mysql_query("SELECT username FROM usertable WHERE username='$username'"); 

    if (mysql_num_rows($query) != 0) 
    { 
     echo "Username already exists"; 
    } 
?> 
</li> 
</ul> 
+7

嗯,乍一看,註釋掉你的'$ username'值大概是沒有幫助的東西 –

+0

哪裏表單標籤? – Sanoob

+0

哪裏是你的形式,以及你如何獲得用戶名輸入到PHP –

回答

0
<?php 

    if (isset($_POST['username'])) // Its a submission 
    { 
     $dbhost = 'localhost:3306'; 
     $dbuser = 'root'; 
     $dbpass = ''; 
     $dbname = 'cast'; 

     $conn = mysql_connect($dbhost, $dbuser, $dbpass, $dbname); 
     if(!$conn) 
     { 
      die('Could not connect: ' . mysql_error()); 
     } 

      $username = mysql_escape_string(trim($_POST['username'])); // Sanitize 
      if(empty($username)) { 
       echo "Please enter an username"; 
      } else { 
       mysql_select_db($dbname); 
       $query = mysql_query("SELECT * FROM usertable WHERE name='$username' LIMIT 1"); 

       while ($row = mysql_fetch_array($query)) { 
        if($row){ 
         echo('Username exists'); 
        } else { 
         // do further registration 
        } 
       } 
      } 
    } 

?> 
<form id="usertype" action="<?= htmlentities($_SERVER['PHP_SELF']); ?>" method="post" > 
    <center> 
     <h1> User Registration Page </h1> 
     <div id="content"> 
      <input type="textbox" id="username" name="username" value="" /> 
      <input type="submit" name="submit" value="Submit"/> 
     </div> 
    </center> 
</form> 
+0

0票接受 - 此消息出現在文本框附近。存在同樣的問題。 – user3454387

+0

張貼之前檢查過。沒有問題。 – effone

+0

Ya ..錯誤已經消失,但代碼不起作用。它接受用戶名alreay存在。 – user3454387

0

我建議你使用的MySQLi和使用isset用於這一目的。你可以試試下面的代碼:

<html> 
<body> 

<?php 

/* START OF CONNECTION */ 
$conn = mysqli_connect("localhost","root","","cast"); 
if(mysqli_connect_errno()){ 
echo "Error".mysqli_connect_error(); 
} 

if(isset($_POST['submit'])){ /* IF SUBMIT IS CLICKED */ 

$username=mysqli_real_escape_string($conn,$_POST['username']); /* TO PREVENT SOME OF SQL INJECTION */ 
$query = mysqli_query($conn,"SELECT username FROM usertable WHERE username='$username'"); 

if(mysqli_num_rows($query)==0){ /* IF NO ACCOUNT IS FOUND */ 
header("LOCATION:proceed.php"); /* IT WILL PROCEED TO A NEW PAGE */ 
} 

else { /* ELSE IF THERE'S A USERNAME FOUND */ 
echo "Username is already taken. Please try again."; /* IT WILL STAY ON THE SAME PAGE */ 
} 

} /* END OF ISSET SUBMIT */ 

?> 

<form action="" method="POST"> 
<ul class="user"> 
<li class="label">User name </li> 
<li class="field"> 
<input type="text" id="username" name="username" class="required error"/></li> 
<li><input type="submit" value="Validate" name="submit"></li> 
</ul> 
</form> 

</body> 
</html> 
+0

它不能正常工作。在表單動作中,我將它重定向到另一個表單來輸入數據庫的詳細信息。該頁面被加載並給出「輸入數據」的結果,而不檢查用戶名的存在 – user3454387

+0

有沒有什麼方法可以在我們輸入用戶名的時候檢查用戶名的存在 – user3454387

+0

我提供的上面的代碼工作正常,你是否試過了?試着把它放到另一個記事本或其他東西里,保存爲PHP文件, –

相關問題