Проверка наличия имени пользователя в AJAX

Я использую базовую регистрационную форму с AJAX, но форма не связана с базой данных. Я, очевидно, что-то пропускаю.

Итак, вот поле, которое я хочу проверить.

Username:<input type="text" name="user" id="user" maxlength="30"> <span id="msgbox" style="display:none"/></input> 

Затем я использую jQuery, вот код:

 $(document).ready(function() { $("#user").blur(function() { //remove all the class add the messagebox classes and start fading $("#msgbox").removeClass().addClass('messagebox').text('Checking...').fadeIn("slow"); //check the username exists or not from ajax $.post("user_availability.php",{ user_name:$(this).val() }, function(data) { if(data=='no') { //if username not avaiable $("#msgbox").fadeTo(200,0.1,function() {//start fading the messagebox //add message and change the class of the box and start fading $(this).html('This User name Already exists').addClass('messageboxerror').fadeTo(900,1); }); } else { $("#msgbox").fadeTo(200,0.1,function() { //start fading the messagebox //add message and change the class of the box and start fading $(this).html('Username available to register').addClass('messageboxok').fadeTo(900,1); }); } // else } // function ); // $.post }); // blur }); // ready 

И у меня есть этот код, user_availability.php :

 mysql_connect(localhost,$user,$password); or die('There is error to connect to server:-'.mysqli_connect_error()); $db_selected = mysql_select_db($database); $user_name=$_POST['user_name']; $sql = "select * from members where username='$user_name'"; $result = mysql_query($sql); while($row = mysql_fetch_assoc($result)) { $existing_users[] = $row['username']; } if (in_array($user_name, $existing_users)) { echo "no"; //user name is not availble } else { echo "yes"; //user name is available } 

Я не получаю ошибок базы данных. Форма будет более существенной, но я не могу заставить ее работать с этим полем. Какие-либо предложения?

Просто нитпик в заявлении select. Поскольку вам нужно только получить, сколько строк существует для введенного имени пользователя, вам не нужно делать «select *», так как в зависимости от количества столбцов в вашей таблице пользователей вы можете возвращать довольно много данных. Я бы пересмотрел ваш запрос так:

 $sql = "select COUNT(username) from members where username=$user_name"; 

Затем вы проверяете, чтобы результат запроса равнялся нулю. Если это так, то имя пользователя доступно.

Я знаю, что вышеизложенное не было ответом на ваш вопрос, а просто подумал, что я бы указал на это, поскольку это выглядит как функция, которая будет вызвана много, в зависимости от трафика в вашей регистрационной форме и творчества ваших посетителей ,

Проверьте свой запрос:

  $sql = "select * from members where username='$user_name'"; 

Я этот вышеприведенный запрос должен быть:

  $sql = "select * from members where username=$user_name";