php - PDO方式插入中文数据到mysql出现乱码
问题描述
全部改成utf8了还是报错、网上搜了很多,修改了还是报错,求助各路大神!感谢!
php插入数据报错
插入前的编码格式
数据库结构格式
插入数据的代码
看你的代码,在创建表时候没有给表设置字符集,导致存入汉字失败,或者存进去乱码等问题。
建议给表设置默认字符集,具体SQL如下:
给表 userinfo
设置字符集 utf8_general_ci,也可用其他字符集
ALTER TABLE userinfo
CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
完了建议查看一下表结构: SHOW CREATE TABLE userinfo
;
如果还不行,就给每个字段都设一遍字符集:
例如:修改type的字符集
ALTER TABLE userinfo
CHANGE type type VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;
最后如果还不行,就重新建表吧!
SQL附上:
CREATE TABLE user_info
(id
int(10) NOT NULL AUTO_INCREMENT COMMENT 'ID' ,type
char(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '类型' ,res
char(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '什么鬼?' ,date
char(40) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '这又是什么?' ,contact
char(30) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT 'o(>ω<)o' ,phone
bigint(12) NOT NULL DEFAULT 0 COMMENT '手机' ,qq
bigint(13) NOT NULL DEFAULT 0 COMMENT 'QQ' ,
PRIMARY KEY (id
)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_unicode_ci
COMMENT='用户详情表'
AUTO_INCREMENT= 1
ROW_FORMAT=COMPACT;
这篇关于php - PDO方式插入中文数据到mysql出现乱码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!