贴出乱码了,重新贴一下。register.php
<?php   function makeregisterform()
   {
      echo "<htmL>";
  echo "<head>";
  echo "<title>New user register</title>";
  echo "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=gb2312\"/>";
  echo "<style type=\"text/css\">";
  echo "p{text-indent:2em;}";
  echo "p,a,td,b{font-size=13;}";
  echo "</style>";
  echo "</head>";
  echo "<body>";
  echo "<form action='register.php' method=post>";
  echo "<table>";
  echo "<tr><td bgcolor=\"#c6e2f4\">新用户注册</td></tr>";
  echo "<tr><td>";
  echo "<pre>";
  echo "名字<input type=text size=10 maxlength=50 name=username>\n";
  echo "密码<input type=password size=10 maxlength=50 name=userpassword>\n";
  echo "密码确认<input type=password size=10 maxlength=50 name=userpassword1>\n";
  echo "邮箱<input type=text size=20 maxlength=255 name=useremail>\n";
  echo "<input type=submit value='注册'>\n";
  echo "<input type=reset value='清除'>\n";
  echo "</pre></td></tr>";
  echo "</table>";
  echo "</form>";
  echo "<p>";
  echo "<b>声明为了安全起见,请使用不易被人破解的密码。</b>";
  echo "</p>";
  echo "</body>";
  echo "</html>";
   }
     if(!$HTTP_POST_VARS['username'])
   {
      makeregisterform();
  echo"not have username";
  exit;
    }
   if(!$HTTP_POST_VARS['userpassword'])
   {
      makeregisterform();
  echo"<br>";
  echo"not have password";
  exit;
    }
   if(strlen($HTTP_POST_VARS['username'])<2)
   {
      makeregisterform();
  echo"<br>";
  echo"your username is too short!";
  exit;
    }
   if((strstr($HTTP_POST_VARS['username'],"'")))
   { 
      makeregisterform();
  echo"<br>";
  echo"your username can't include speciaal letter";
  exit;
}
   $username=htmlspecialchars($HTTP_POST_VARS['username']);
   if(strlen($HTTP_POST_VARS['userpassword'])<2)
   {
      makeregisterform();
  echo"<br>";
  echo"your password is too short!";
  exit;
}
   if($HTTP_POST_VARS['userpassword']!=$HTTP_POST_VARS['userpassword1'])
   {
      makeregisterform();
  echo"<br>";
  echo"your twice password input are defferent!";
  exit;
}
   if(!(strstr($HTTP_POST_VARS['useremail'],"@")))
   {
      makeregisterform();
  echo"<br>";
  echo"wrong email form";
  exit;
    }

   $conn=mysql_connect('localhost','','');
   mysql_select_db('phpstu');
   $sql="select * from user where username='".$username."'";
   $result=mysql_query($sql,$conn);
   
   if($hobj=mysql_fetch_object($result))
   {
      mysql_close($conn);
  makeregisterform();
  echo "your name is used before";
  exit;
    }
   else
   {
    $sql="select * from user order by userid desc";
    $result=mysql_query($sql,$conn);
    if($hobj=mysql_fetch_object($result))
    {
      $newid=$hobj['userid'];
  $newid=$newid+1;
  echo $newid;
 }
    else
    {
      mysql_close($conn);
  makeregisterform();
  echo "desc error!";
  exit;
     }
   
    $sql="insert into user(userid,username,userpasswd,useremail) values('$newid','$username','$userpasswor','$useremil')";
  
    if(!sql_query($sql,$conn))
    {
      mysql_close($conn);
  makeregisterform();
  echo "add new user fail";
  exit;
}
    else
     { mysql_close($conn);
      makeregisterform();
  echo "add new user OK";
  exit;
  }  
    }
?>

解决方案 »

  1. cvm
  2. 建议楼主这种变量,请用
    $HTTP_POST_VARS['useremail']
    $_POST['useremail']
    然后try
      

  3. 不关这个的事,如果我在中间加一句:
    echo $HTTP_POST_VARS['useremail'];和用:
    echo $_POST['useremail'];还有用:
    echo $useremail;结果是一样的,变量是取到了,可是没有插入到数据库,不清楚后面的哪一步错了,就是从第一个查询语句才开始有问题的,表单部分没有问题,第一个查询语句-------$sql="select * from user where username='".$username."'";
    $result=mysql_query($sql,$conn);大家再帮我想想啊!谢谢了! :)
      

  4. 最后一个查询:
    if(!sql_query($sql,$conn))
    改成
    if(!mysql_query($sql,$conn))另外,选最大ID号可以这样:
    SELECT max(id) AS maxid FROM user
    得到的字段maxid就是最大ID号。不要把所有的记录都选出来然后再取最大的一个ID。
      

  5. 谢谢,楼上红河州的朋友,我也云南的,大理的。我把那一部分改了,不过记录还是没有提交到数据库。我再试试,大概是insert的那句错了。 $conn=mysql_connect('localhost','','');
        $sql="SELECT max(userid) AS maxid FROM user";
        $result=mysql_query($sql,$conn);
        if($hobj=mysql_fetch_array($result))
        {
          $newid=$hobj['userid'];
      $newid=$newid+1;
      echo $newid;
     }
        else
        {
          mysql_close($conn);
      makeregisterform();
      echo "desc error!";
      exit;
         }
      

  6. 哦是吗?今年春节我还是在大理度过的呢:)
    你应该把上面代码里的
    $newid=$hobj['userid'];
    改为
    $newid=$hobj['maxid'];
    因为你选出的是maxid,而不是userid。
    可能你的userid是唯一型(unique),而刚才得到的userid为空,加1之后也只是1,插入时有重复的,自然就插入失败了。
    你可以把userid设为自增长型的(auto_increment),这样,插入时不需要指定userid,MySQL会在插入时自动加1。
      

  7. userid就是自增长型的(auto_increment)我再试试,就是说在插入时不要指定,只插入username.userpasswd,useremail项对吧?我再看看。谢谢
      

  8. 我改成$newid=$hobj['maxid'];还是不行的,还是插入失败,我想应该是后面的插入语句的错误。
      

  9. 对。
    $sql="insert into user(username,userpasswd,useremail) values('$username','$userpasswor','$useremil')";
    这样就行了。
      

  10. insert这句sql是没有错的呀。
    是不是字段名没写对?
      

  11. 刚刚试过了,已经对了,是insert语句的错,就是在表名后面还有值后面要加个空格跟括号内的内容隔开。$sql="insert into user (username,userpasswd,useremail) values ('$username','$userpassword','$useremil')";但是又有一个新问题,就是在页面上直接插入的记录,在表里只userid和username有值,而其它的userpasswd,useremail是没有值的,不管是在mysql的命令窗口下还是用PHP代码显示都没有,这是什么问题呢。
      

  12. 注意看你的insert的sql:values ('$username','$userpassword','$useremil')";里的变量名写对了吗?
      

  13. 好了,已经解决了。:)是因为取出的变量的问题。htmlspecialchars()函数处理一下就对了,如$username=htmlspecialchars($HTTP_POST_VARS['username']);,因为开始用的代码里只有username变量处理过,而newid也是经过处理的所以就能正确显示,而userpassword和useremail没处理过就出错了,现在就对了。还有就是我在插入语句里开始时写错了变量名,正确的是
    $sql="insert into user (username,userpasswd,useremail) values ('$username','$userpassword','$useremil')";
    现在整段代码就是对的了,谢谢红河!