Php 检查用户名是否可用于AJAX

Php 检查用户名是否可用于AJAX,php,javascript,ajax,Php,Javascript,Ajax,我在AJAX中使用一个基本的注册表单,但是表单没有连接到数据库。我显然忽略了什么 这是我要验证的字段 Username:<input type="text" name="user" id="user" maxlength="30"> <span id="msgbox" style="display:none"/></input> 我有一段代码,user\u availability.php: mysql_connect(localhost,$user,$pa

我在AJAX中使用一个基本的注册表单,但是表单没有连接到数据库。我显然忽略了什么

这是我要验证的字段

Username:<input type="text" name="user" id="user" maxlength="30">
<span id="msgbox" style="display:none"/></input>
我有一段代码,
user\u 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
}
我没有发现数据库错误。表格将更加充实,但我无法让它在这个领域发挥作用。有什么建议吗?

检查您的查询:

 $sql = "select * from members where username='$user_name'";
我认为上述查询应为:

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

对select语句只是吹毛求疵。由于您只需要获取输入用户名的行数,因此不需要根据用户表中的列数进行“选择*”,您可能会返回大量数据。我会将您的查询修改为:

$sql = "select COUNT(username) from members where username=$user_name";
然后检查以确保查询结果等于零。如果是,则用户名可用


我知道上面的内容并不是对您问题的回答,但我想我会指出这一点,因为这似乎是一个函数,根据您注册表上的流量和访问者的创造力,它会被调用很多次。

我将分别从php页面本身的故障排除开始。添加一些代码来处理$\u GET vars,然后检查:当您直接访问它时,它是否提供了预期的响应?另外,使用Firebug(或用于检查请求参数的类似工具)来验证javascript函数是否将正确的参数传递到php页。嗯。。。不,问题是这个。它没有连接到数据库。我的意思是,当一个新用户输入他的用户名时,它已经在数据库中了。它仍然说“Username是可用的”…但事实是它不可用。注意:不要像那样直接在SQL中插入变量-它容易受到SQL注入的攻击不,Username是一个字符串而不是一个数字(我假设),所以OP肯定要quotesqued或quoteless,这仍然是一种不好的方法,容易受到SQL注入的影响
$sql = "select COUNT(username) from members where username=$user_name";