<?
error_reporting(0);
$conn = mysql_connect("localhost", "root", "root") or die("connect err.".mysql_error());
mysql_select_db("xssf");
$name = trim($_POST['name']);
$studentid = trim($_POST['studentid']);if($_POST['ok']==1){
if ($name && $studentid){
 $sql = "SELECT * FROM xueshengjibenxinxib WHERE 姓名 = '$name' and 学号='$studentid'";
 $res = mysql_query($sql);
 $rows = mysql_num_rows($res);
  if($rows){
   header("refresh:0;url=a.htm");//跳转页面
   exit;
  }
else echo "<script language=javascript>alert('用户名密码错误');history.back();</script>";
}
 else echo "<script language=javascript>alert('用户名密码不能为空');history.back();</script>";
}
?>数据库是可以链接的已测,SQL语句也可以执行,但是无论输入什么用户名和密码总显示“用户名密码错误”,数据库里有相关姓名和学号信息(执行SQL语句的时候可以查询到记录)

解决方案 »

  1.   


    $rows>0 肯定就执行 else echo "<script language=javascript>alert('用户名密码错误');history.back
    直接这样写
    if($rows){
    header("refresh:0;url=a.htm");//跳转页面
    exit;
    }
    else echo "<script language=javascript>alert('登陆成功');history.back();</script>";
    }
    还有判断用户名和密码不能为空,直接在前端用JS判断,也可以在查询之前判断。
      

  2.   

    不好意思我理解错了
    if($rows){
    header("location:a.htm");//跳转页面
    exit;
    }
    else echo "<script language=javascript>alert('用户名密码错误');history.back();</script>";
    }把查询语句打印出来然后执行一下,看是什么结果
      

  3.   


    $sql = "SELECT * FROM xueshengjibenxinxib WHERE 姓名 = '$name' and 学号='$studentid'";可能是你的 sql 出现问题。。字段为中文可能搜索不出来的,把字段名改为英文,,,,,
      

  4.   

    执行SQL语句的时候可以查询到记录
    你所执行的sql语句是上程序的出来的sql还是直接在数据库中写的?
      

  5.   

    $sql = "SELECT * FROM xueshengjibenxinxib WHERE 姓名 = '$name' and 学号='$studentid'";如果不是上程序得出的sql,你要把'姓名'、'学好'改成name、$studentid
      

  6.   

    SQL是支持中文字段的,我把SELECT * FROM xueshengjibenxinxib WHERE 姓名 = '$name' and 学号='$studentid'中的$name和$studentid替换成数据库中存在的记录时,可以查询出1条结果,说明用这个SQL语句没错吧?还有“姓名”,“学号”是数据库中本来的字段名,应该不可以改吧
      

  7.   

    我打印出SELECT语句,然后复制到SQL中执行也是可以 查询出记录的不知道怎么回事,就是显示错误
      

  8.   

    判断返回的行数
    if($rows>0){}
       可能没有进判断
      

  9.   


    $rows = mysql_num_rows($res);
    var_dump($rows);//看下这个有没数据
      

  10.   

    用var_dump($rows);无论我输入的是正确还是错误的信息都输出:bool(false),请高手指点 
      

  11.   

    "SELECT * FROM xueshengjibenxinxib WHERE 姓名 = '$name' and 学号='$studentid'";请改成 "select * from xueshengjibenxinxib where 姓名='".$name."' and 学号=".$studentid.""
      

  12.   

    你的表单呢?在什么情况下 $_POST['ok'] 会等于 1 呢?
      

  13.   

    表单里OK是HIDDEN属性的,恒等于1,也就是这个IF是肯定成立的,从执行结果也可以看出来是,这个IF是始终执行的
      

  14.   

    $sql = "SELECT * FROM xueshengjibenxinxib WHERE `姓名` = '$name' and `学号`='$studentid'";这个呢。还不行的话就看看:
    mysql_query($sql) or die(mysql_error());
    正确执行没
      

  15.   

    我也是遇到这样的问题啊,SQL里面可以执行,但是用PHP来连接就是不行,急死人了
      

  16.   

    if($_POST['ok']==1){
    if ($name && $studentid){
    $sql = "SELECT * FROM xueshengjibenxinxib WHERE 姓名 = '$name' and 学号='$studentid'";
    $res = mysql_query($sql);
    $rows = mysql_num_rows($res);
    if($rows){
    header("refresh:0;url=a.htm");//跳转页面
    exit;
    }
    else echo "<script language=javascript>alert('用户名密码错误');history.back();</script>";
    }
    else echo "<script language=javascript>alert('用户名密码不能为空');history.back();</script>";
    }
    ?>类似判断语句的问题,
    在else echo "<script language=javascript>alert('用户名密码错误');history.back();</script>";
    前面加上} 
      

  17.   

    if($_POST['ok']==1){
    if ($name && $studentid){
    $sql = "SELECT * FROM xueshengjibenxinxib WHERE 姓名 = '$name' and 学号='$studentid'";
    $res = mysql_query($sql);
    $rows = mysql_num_rows($res);
      if($rows){
                 header("refresh:0;url=a.htm");//跳转页面
                   exit;
               }
          
             else 
             {
             echo "<script language=javascript>alert('用户名密码错误');history.back     ();</script>";
             }
    }else 
    {
    echo "<script language=javascript>alert('用户名密码不能为空');history.back();</script>";
    }
    }
    ?>
      

  18.   

    一般情况下不要使用中文作为数据库字段名,如果用了,你得保证发送给mysql的语句的编码与字段编码一致。
    也就是说查询语句之前要执行一下set names语句。