当提交登录信息出现这样的提示:warning:mysql_fetch_array():supplied argument is not a valid mysql result resource in d:\appserv\www\registers_ok.php on line 4.
我的registers_ok.php代码是:
<?php session_start(); include_once("conn/conn.php");
$name=trim($_POST[name]);
$sql=mysql_query("select name from user where name='$name'",$conn);
$info=mysql_fetch_array($sql);
if($info!=false){
  echo "<script language='javascript'>alert('对不起,该昵称已被其他用户使用!');history.back();</script>"; 
  exit; 
}
$name=trim($_POST[name]);
$pass=md5($_POST[pass]);
$email=trim($_POST[email]);
$qq=trim($_POST[qq]);
$phone=trim($_POST[phone]);
$query=mysql_query("insert into user(name,pass,email,qq,phone) values('$name','$pass','$email','$qq','$phone')",$conn);
if($query==true){ 
session_register("user");
   $_SESSION["name"]=$name; 
echo "<script>alert('注册成功!');window.location.href='zhuye.php';</script>";
}else{
   echo "<script language='javascript'>alert('对不起,注册失败!');history.back();</script>"; 
   exit;
}
?>

解决方案 »

  1.   

    第二行吧,也就是这一行 $name=trim($_POST[name]); 
    $_POST["name"] 里的name加上引号,我看下面关于取得$_POST里的值时候,也没加引号,
    测试一下,看是不是这个问题
      

  2.   

    ("select name from user where name='$name'",$conn); 这个SQL语句肯定有问题,楼主应该先检查数据库是否已经连接上,表明和字段名是否有错误
      

  3.   

    $sql=mysql_query("select name from user where name='$name'",$conn); 
    这句话有问题$sql=mysql_query("select name from user where name='".$name"'",$conn); php中双引号内的内容直接会被当成文字输出 你要输出变量,一定要移到双引号外 用.号连接
      

  4.   

    $sql=mysql_query("select name from user where name='".$name."'",$conn); 
    少加了个.号
      

  5.   

    出现的原因是使用mysql_fetch_array()使用的错误的参数吧,
    要么是$sql返回为空;要么是你的SQL语句就没有正确执行;使用mysql_fetch_array()之前先判断你的$sql的记录条数,如果大于0才使用mysql_fetch_array();
      

  6.   

    if($info!=false){ 
      echo " <script language='javascript'>alert('对不起,该昵称已被其他用户使用!');history.back(); </script>"; 
      exit; 

    这样判断一条记录存在是不合理的,还不如直接用记录条数来判断了
      

  7.   

    楼主你可以先改一下SQL语句,如果还不行,就再看数据库是否可以连接。
      

  8.   

    sql语句有问题啊$name 字串,直接写不对
      

  9.   

    字符串这样写是可以的,我认为问题应该是出在$conn这里。 再仔细看看。
      

  10.   

    select name from user where name=**
    先在mysql控制台试一下 。如果能执行 则说明是你程序中 sql语句有问题
    也可先 echo $name 一下  看看 值是不是正确的
      

  11.   


    不会是用了SQL的关键字吧
      

  12.   

    $info=mysql_num_array($sql); 
    if($info>0){ 
      echo " <script language='javascript'>alert('对不起,该昵称已被其他用户使用!');history.back(); </script>"; 
      exit; 

    这样应该可以,如果用mysql_fetch_array需要使用一个排列方式,如MYSQL_NUM之类的。