源代码:
$sql="select * from tb_user where nicheng='".$uname."'";
$re=mysql_query($sql,$conn);
//echo $sql;
//exit();
$info=mysql_fetch_array($re);
if($info==true)
 {
   echo "<script>alert('该昵称已经存在!');history.back();</script>";
   exit;
 }
测试时总是出错,并且提示:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result (错误在“$info=mysql_fetch_array($re);”sql语句没有错误,利用echo输出在mysql执行过!同是也发现,当我把条件设置成字段的值为数字的字段时(如:“where id='".$uname."'";”或者“where id='".$uname."'";”)执行正常!当条件字段的值为中文时(如nicheng,xingming,xingbie),执行就报以上错误!
所以我估计是编码问题,但是我用echo输出看了,中文显示正常!数据库中的中文也是显示正常!数据库是:
id  xingming  xingbie  buji  ruxue  banji  mima  ip  shijian  nicheng  
 1    张三       男    初中   2011    05   2134  NULL   NULL     小三 
结构为:
  id int(11)   否  auto_increment               
  xingming varchar(8) utf8_bin  是 NULL                
  xingbie varchar(2) gb2312_chinese_ci  是 NULL                
  buji varchar(4) gb2312_chinese_ci  是 NULL                
  ruxue varchar(4) gb2312_chinese_ci  是 NULL                
  banji varchar(2) gb2312_chinese_ci  是 NULL                
  mima varchar(50) gb2312_chinese_ci  是 NULL                
  ip varchar(15) gb2312_chinese_ci  是 NULL                
  shijian datetime   是 NULL                
  nicheng varchar(25) utf8_bin  否 

解决方案 »

  1.   

    楼主是要进行判断昵称的重复性吧?
    换成这样试试呢$sql="select * from tb_user where nicheng='".$uname."'";
    $result=mysql_query($sql);
    if(mysql_num_rows($result)>0){
      echo "昵称已经存在";
    }
    else {
      //进行插入数据的操作
    }如果你觉得是编码问题,你看看链接数据库那有没有这样类似的语句
    mysql_query('set names utf8');
      

  2.   

    $re=mysql_query($sql,$conn) or die(mysql_error());  //这样报什么错
      

  3.   

    你数据库用的什么编码?
    加上这句试试
    mysql_set_charset("数据库所用编码编码”);
      

  4.   


    这样报的错误是:
    Illegal mix of collations (utf8_bin,IMPLICIT) and (gb2312_chinese_ci,COERCIBLE) for operation '='这应该是编码问题吧!问题我也在网上找到方法解决了!将sql语句这么写就对了:
    $sql="select * from tb_user where nicheng=binary('".$uname."')";由于代码是复制, mysql_query("set character set gb2312");数据连接这里的编码我修改的时候是修改的被复制的代码中,本文件中没有修改成utf8,真是大意了!多谢指教!!
      

  5.   

    当然,修改了连接编码之后,sql语句中也没有必要用binary()了!这句话是说给有同样问题的朋友看的!