在一个用户登录的系统中,输入用户名密码后判断是否与数据库中一致来进行登录,问题是用户名为汉字时总是出错(数据表中有该记录),英文时则正常。
我用的是mysql_num_rows(),代码如下:
<?php
$name=$_POST['admin-name'];
$passowrd=$_POST['admin-pwd'];
mysql_query("set names GBK");
$sql = "SELECT * FROM gbook where name = '".$name."' ";
 $res = mysql_query($sql,$link);
 $row = mysql_num_rows($res);
 if ($row==1){
echo "$name<br>";
echo $row;
echo "登录成功!正在跳转到管理页面……"; 
}else{
echo "$name<br>";
echo $row;
 my_msg("用户名密码错误","admin-login.html");
}
?>如果用户名是中文的话,echo出来的记录条数是0,如果是英文则正常。另外,数据表编码和该php文件编码都是gbk。
我试了很久,一直不行,希望高手帮忙,多谢多谢!!

解决方案 »

  1.   

    把你的sql打出来看看!看看是什么结果!再把你打出的sql直接在数据里执行,看结果如何!上面两步基本能判断问题出在哪
      

  2.   

    非常感谢!
    我按你说的把$sql $res都打了出来,用李四进行登录时,$sql显示的是SELECT * FROM user where name = '李四' ,我把它粘贴到数据库里执行也是正常的。另外显示$res的 结果不管中文还是英文都是Resource id #5。问题就是mysql_num_rows($res)的结果在中文用户名时显示0,英文显示1。还请仁兄指点!
      

  3.   

    gbk utf-8 转换, header()函数转换一下*.PHP 文件字符编码和MYSQL设置字符编码相同,
    header("Content-type: text/html; charset=utf-8");呵呵。。来要分的
      

  4.   

    可我数据库编码是gbk的啊,刚刚按你说的试了,显示
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\www\admin\admin-login.php on line 28
    28行就是 $row = mysql_num_rows($res);
      

  5.   

    尽量保持php文件编码和数据库编码一致,会让你写东西省很多心!真的!