2015-05-07 51 views
0

我正在嘗試使用下面的代碼執行「重複的用戶名」檢查。它繼續告訴我,用戶名實際上不可用。有人能告訴我我做錯了什麼嗎?檢查用戶名是否在PHP中可用

FORM

<form method="post" action="scripts/checkusername.php">       
     <div class="form-group" hidden> 
      <label for="store">User ID</label> 
      <input type="text" class="form-control" name="uid" id="uid" value="<?php echo " " . $_SESSION["UserID"] . " "; ?>"> 
     </div> 
     <div class="form-group"> 
      <label class="control-label">Store URL</label> 
      <p class="form-control-static"><b><?php echo isset($row['Username']) ? $row['Username'] : NULL; ?></b>.example.com</p> 
     </div> 
     <div class="form-group"> 
      <label for="store">Store Name</label> 
      <input type="text" class="form-control" name="username" id="username" value="<?php echo isset($row['Username']) ? $row['Username'] : NULL; ?>"> 
     </div> 
     <div class="form-group"> 
      <label for="exampleInputEmail1">Email Address</label> 
      <input type="email" class="form-control" name="email" id="email" value="<?php echo isset($row['EmailAddress']) ? $row['EmailAddress'] : NULL; ?>"> 
     </div> 

     <button type="submit" class="btn btn-prime">Update Details</button> 
</form> 

SCRIPT

<?php 

    $servername = "localhost"; 
    $username = "root"; 
    $password = "root"; 
    $dbname = "users"; 

    $conn = new mysqli($servername, $username, $password, $dbname); 

    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 

    if (isset($_POST['username'])) 
    { 
     $username = mysql_real_escape_string($_POST['username']); 

     if (!empty($username)) 
    { 
      $username_query = mysql_query("SELECT * 
              FROM users 
              WHERE Username = '$username'"); 
      $count=mysql_num_rows($username_query); 
      if($count==0) 
      { 
       echo "Username doesn't exist"; 
       exit; 
      } 
      else 
      { 
       echo "Username already exists"; 
       exit; 
      } 
    } 
} 

?> 
+4

你不能混合使用'mysql'和'mysqli'這樣的擴展名。如果使用'new mysqli',則必須對所有其他函數使用'mysqli_XXX',或者使用面向對象的接口。 – Barmar

回答

1

既然你用new mysqli打開數據庫連接,你必須使用mysqli功能進行查詢,而不是mysql功能。

if (isset($_POST['username'])) 
{ 
    $username = $_POST['username']; 

    if (!empty($username)) 
    { 
     $username_query = $conn->prepare("SELECT * 
             FROM users 
             WHERE Username = ?"); 
     $username_query->bind_param("s", $username); 
     $username_query->execute(); 
     $count = $username_query->num_rows; 
     if($count==0) 
     { 
      echo "Username doesn't exist"; 
      exit; 
     } 
     else 
     { 
      echo "Username already exists"; 
      exit; 
     } 
    } 
} 
+0

感謝您的回覆。所以改變mysqli到mysql應該也可以嗎? – hcraw

+0

是的,但這是一個壞主意,因爲mysql已經過時,並且沒有準備好的查詢。 – Barmar