2015-05-07 5 views
0

Я пытаюсь выполнить проверку «Повторяющееся имя пользователя», используя следующий код. Он продолжает говорить мне, что имя пользователя доступно, когда на самом деле это не так. Может кто-то сказать мне, что я делаю неправильно.Проверьте, есть ли имя пользователя в PHP

ФОРМА

<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

Смежные вопросы