php - PDO方式插入中文数据到mysql出现乱码

查看:185
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆