用php在mysql数据库内查询中文出错(编码问题)
应该是和文字的编码有关系,但我不知道该怎么办先是mysql表的创建语句:createtableuser(userIDintunsignednotnullauto_incr...
应该是和文字的编码有关系,但我不知道该怎么办
先是mysql表的创建语句:
create table user
(
userID int unsigned not null auto_increment,
username varchar(16) not null,
nickname varchar(30) not null,
)ENGINE=InnoDB DEFAULT CHARSET=gbk;
然后nickname应该是可以输入中文的,前面的post表单我就不写出来了,肯定是不会出问题的,总之在nickname这一项输入的是中文,将输入的数据用php脚本在mysql数据库查询一下是否已经存在,相关代码如下: $result2 = $connect->query("select * from user where nickname = '".$nickname."'");//注:这句话没问题,其他查询都成功了
if(!$result2)
{
throw new Exception('在查找有没有重复用户昵称的时候出问题了)');
}
运行文件后,网页显示上面报错的那句话,网页的编码是utf-8
根据情况来看应该是两边的编码不一样,所以导致查询出错,问题是该怎么改数据库那边?我不太清楚该怎么写。 展开
先是mysql表的创建语句:
create table user
(
userID int unsigned not null auto_increment,
username varchar(16) not null,
nickname varchar(30) not null,
)ENGINE=InnoDB DEFAULT CHARSET=gbk;
然后nickname应该是可以输入中文的,前面的post表单我就不写出来了,肯定是不会出问题的,总之在nickname这一项输入的是中文,将输入的数据用php脚本在mysql数据库查询一下是否已经存在,相关代码如下: $result2 = $connect->query("select * from user where nickname = '".$nickname."'");//注:这句话没问题,其他查询都成功了
if(!$result2)
{
throw new Exception('在查找有没有重复用户昵称的时候出问题了)');
}
运行文件后,网页显示上面报错的那句话,网页的编码是utf-8
根据情况来看应该是两边的编码不一样,所以导致查询出错,问题是该怎么改数据库那边?我不太清楚该怎么写。 展开
展开全部
数据库的编码是 gbk 的,在查询的时候把中文(utf-8)转换成 gbk编码就可以了
$nickname=iconv('utf-8','gbk//TRANSLIT',$nickname);
转换后才执行查询
$nickname=iconv('utf-8','gbk//TRANSLIT',$nickname);
转换后才执行查询
追问
还是不行....还有可能是别的地方错么,能不能直接把数据库设计成utf-8的呢?
追答
修改表的编码,也不会修改到现有数据的编码了,只会影响你以后增加的数据;
修改表的编码:
alter table user default character set utf8;
修改数据库编码:
alter table 库名 default character set utf8;
对编码的修改,不会影响现有的记录的;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询