code:html代码:<input type="text" name="usname" id="usname" size="19" onBlur='inspect(this)'  />ajax代码:function inspect(){
var xmlHttp ; 
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlHttp=new XMLHttpRequest();
  } else {// code for IE6, IE5
   xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
var text = document.getElementById('usname').value ;
//var text1=document.getElementById('addtext').innerHTML;
var url = "addart.php?act=inspect" ;

xmlHttp.open("post",url,true);
xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlHttp.send('text='+text);
xmlHttp.onreadystatechange=changecontent;

function changecontent(){
if (4==xmlHttp.readyState){
if (200==xmlHttp.status){
if(xmlHttp.responseText == "exist"){
alert("非法用户") ;
//document.getElementById('lab_name').innerHTML="用户名已存在" ;
} else {
alert("合法用户") ;
//document.getElementById('lab_name').innerHTML="合法用户名" ;
}

}else{
alert("发生错误!");
}
}
}
}php代码if($act == "inspect"){
$uname = $_REQUEST["text"] ;
$row = mysql_query("select id from usinfo where usname = $uname") ;
if ($row) {
echo "exist" ;
} else {
echo "none" ;
}

}如果输入英文则可以正常检测,如果输入数字则全部为非法的

解决方案 »

  1.   

    $row = mysql_query("select id from usinfo where usname = '$uname'"); //这里少了引号
      

  2.   


    $row = mysql_query("select `id` from `usinfo` where `usname` = '".$uname"' ") ;
    把SQL  写的规整点
      

  3.   


    $row = mysql_query("select `id` from `usinfo` where `usname` = '".$uname."' ") ;
      

  4.   

    不行啊,比如说:数据库里已经有字段usname=abc了,为什么还是会显示合法呢? 应该为非法的
      

  5.   

    if ($act == 'inspect') {
    $uname = $_REQUEST['text'];
    $result = mysql_query("SELECT `id` FROM `usinfo` WHERE `usname` = '{$uname}'";
    if (mysql_num_rows($result) > 0) echo 'exist';
    else echo 'none';
    }
      

  6.   

    打印出你的sql语句 看看到底传进去什么  
    把sql语句放到db中直接执行 看结果符不符合你的需求
      

  7.   

    有错误代码不?
    你原来写的代码中的if判断是有问题的,
    $row = mysql_query("select id from usinfo where usname = $uname") ;
    if ($row) //$row的值是mysql结果集的资源ID,即使上面的查询语句没有查询到数据,$row总是非false的
    //所以,表中已经有abc了,但还是显示合法的
      

  8.   


    如果这样写,检查数字格式是可以的,检查字符型就会报这样的错误:- - - - - - - - - - - - - - The news from the web page - - - - - - - - - - - - - - < br / > < b > Warning < / b > : mysql_num_rows () : the argument is not a valid those MySQL resource in < b > day D: \ \ \ addart. WWW chat PHP < / b > < b > on line 40 < / b > < br / > none - - - - - - - - - - - - - - sure - - - - - - - - - - - - - -
      

  9.   

    mysql 报错为:查询失败Unknown column 'abc' in 'where clause'
      

  10.   

    明显是这里的错误:
    $uname = $_REQUEST["text"] ;应该是$uname = $_REQUEST["usname"] ;
      

  11.   

    宁可愿意在这里猜来猜去的  都舍不得打印完整的sql语句
      

  12.   


    我打印了,现在已经排除错误了,因为sql语句错误!连接变量出错了