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

这篇博客主要讨论了在PHP插入UTF8编码的数据到数据库时遇到的错误,包括未设置表的字符集和字段字符集。解决方案包括使用ALTER TABLE命令设置表和字段的字符集为utf8,以及在PHP代码中设置字符集为UTF-8。如果以上方法无效,博主建议重新创建表并确保所有步骤正确执行。
摘要由CSDN通过智能技术生成

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

php插入数据报错

611489b1eeb8979bf738324a88d8474a.png

插入前的编码格式

461c55714e0b018b91d834cdf065d2e4.png

数据库结构格式

76ae192328aff676b674b136ad431df1.png

插入数据的代码

f06f49dee619cbfcf8b0b183bc481f52.png

f23868d80b1adcff679b4158bc4abdd6.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(>ω

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了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值