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

发布于 2022-09-04 16:02:37 字数 691 浏览 11 评论 0

全部改成utf8了还是报错、网上搜了很多,修改了还是报错,求助各路大神!感谢!

php插入数据报错

clipboard.png

插入前的编码格式

clipboard.png

数据库结构格式

clipboard.png

插入数据的代码

clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

秋意浓 2022-09-11 16:02:37

clipboard.png
看你的代码,在创建表时候没有给表设置字符集,导致存入汉字失败,或者存进去乱码等问题。
建议给表设置默认字符集,具体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;

a√萤火虫的光℡ 2022-09-11 16:02:37

set names utf8改成set names utf8mb4呢

尘曦 2022-09-11 16:02:37

数据库设计没问题
需要在php文件中设置下编码格式为UTF-8
$pdo->exec('set names utf8');
这样就ok了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文