经过昨天几位前辈的建议,做了点修改。暂时来看语法上应该是没问题了,编码上却不知为何传递给MySQL的中文字符串总是乱码php代码如下:
<?php
MySQL_connect("localhost","root","")or die("无法连接服务器");
MySQL_select_db("card")or die("无法连接数据库");
$Name=$_GET['Name'];
$CardType=$_GET['CardType'];
$CardStar=$_GET['CardStar'];
$CardSXList=$_GET['CardSXList'];
$CardRace=$_GET['CardRace'];
$sql="";
if(!empty($Name))
{
$sql=$sql."Name LIKE '%".$Name."%'";
if($CardType)
{
$sql=$sql." AND CardType LIKE '".$CardStar."'";
}
}
else
{
if(empty($CardType))
{
$CardType="怪兽";
$sql=$sql."CardType LIKE '".$CardType."'";
}
else
{
$sql=$sql."CardType LIKE '".$CardType."'";
}
}
if($CardStar)
{
$sql=$sql." AND CardStar LIKE '".$CardStar."'";
}
if($CardSXList)
{
$sql=$sql." AND CardSXList LIKE '".$CardSXList."'";
}
if($CardRace)
{
$sql=$sql." AND CardRace LIKE '".$CardRace."'";
}
$query="SELECT * FROM card WHERE ".$sql;
$result=MySQL_query($query);
$row=MySQL_fetch_array($result);
echo $row[Name]."<br />";
if($CardType=="怪兽")
{
echo $row[CardStar]."星<br />";
echo $row[CardSXList]."属性<br />";
echo $row[CardRace]."<br />";
echo "攻击力:".$row[Attack]."<br />";
echo "防御力:".$row[Deffend]."<br />";
}
echo $row[Effect]."<br />";
echo $query."<br />";
echo"<a href=card.html>继续查询</a>"
?>例如网页中选择了CardType为魔法,输出结果却如下所示:Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\APMserv\APMServ5.2.6\www\htdocs\card.php on line 44
SELECT * FROM card WHERE CardType LIKE '榄旀硶'
继续查询不知为何本应显示中文魔法的字符串会是乱码,求解惑!

解决方案 »

  1.   

    $result=MySQL_query($query) or die(mysql_error());  //这样,提示什么错误至于乱码,应该是你程序编码与浏览器编码不一致导致的。统一编码。
      

  2.   


    phpAdmin里面显示如下:MySQL 字符集: UTF-8 Unicode (utf8)那个表的整理那栏显示的是gb2312_chinese_ci应该如何解决?
    显示错误为:Illegal mix of collations (gb2312_chinese_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation 'like'查了下是字段字符集编码不同的意思…… 但是不知道从何下手 把数据表改为UTF-8么?
      

  3.   

    mysql_query('set names gbk');  //加上这个呢另外,你的代码中like 部分都没有%..% 通配符。是相等还是模糊匹配?
      

  4.   

     语句$query出了问题,获取 MySQL_query($query)不到结果。然后就错了 
      

  5.   

    mysql_fetch_array(): 说他的错误,你要在
    $query="SELECT * FROM card WHERE ".$sql;
    $result=MySQL_query($query);
    var_dump($result);
    $row=MySQL_fetch_array($result);查看一下类型,是不是结果集。
    你的程序也必须要做判定的,SELECT * FROM card WHERE CardType LIKE '榄旀硶' 乱码你要统一编码。
    如果不好统一,你可以在程序中改变编码。
    iconv('EUC-JP','UTF-8//ignore',$v); 用它转编码。
      

  6.   

    本帖最后由 xuzuning 于 2012-05-02 10:56:00 编辑
      

  7.   

      为了保证不出现乱码,要保证三处的编码要统一:  第一:您没有设置字符集:再添加一个 mysql_query("set names utf8");//utf8为编码,要与你的数据库里的一样,在这里utf8可不能写成utf-8了。utf8是编码,按你的编码来;
      第二:文件的保存类型,默认的一般都是ANSI,你要保存成你统一的那种类型,
      第三:有必要的话在php文件的头部加多一句话  header("content-type:text/html;charset=utf-8");
      还有就是HTML页面的<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    这几个地方都设置了统一的编码,你以后就不会出现乱码了。