PDO方式插入中文数据到mysql出现乱码
全部改成utf8了还是报错、网上搜了很多,修改了还是报错,求助各路大神!感谢!
php插入数据报错
插入前的编码格式
数据库结构格式
插入数据的代码
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
全部改成utf8了还是报错、网上搜了很多,修改了还是报错,求助各路大神!感谢!
php插入数据报错
插入前的编码格式
数据库结构格式
插入数据的代码
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
看你的代码,在创建表时候没有给表设置字符集,导致存入汉字失败,或者存进去乱码等问题。
建议给表设置默认字符集,具体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;
set names utf8改成set names utf8mb4呢
数据库设计没问题
需要在php文件中设置下编码格式为UTF-8
$pdo->exec('set names utf8');
这样就ok了