经过昨天几位前辈的建议,做了点修改。暂时来看语法上应该是没问题了,编码上却不知为何传递给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 '榄旀硶'
继续查询不知为何本应显示中文魔法的字符串会是乱码,求解惑!
<?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 '榄旀硶'
继续查询不知为何本应显示中文魔法的字符串会是乱码,求解惑!
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么?
$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); 用它转编码。
第二:文件的保存类型,默认的一般都是ANSI,你要保存成你统一的那种类型,
第三:有必要的话在php文件的头部加多一句话 header("content-type:text/html;charset=utf-8");
还有就是HTML页面的<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
这几个地方都设置了统一的编码,你以后就不会出现乱码了。