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

全部改成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了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP连接MySQL数据库的三种方式分别是PDOMySQLi和mysqlPDO(PHP Data Objects)是PHP提供的一种数据库操作扩展,支持多种数据库,其中包括MySQLPDO提供了一组统一的方法,使开发者能够以同样的方式对待不同的数据库。其优点包括安全性高、可移植性好、支持事务处理等。使用PDO连接MySQL数据库时,需要使用PDO的构造函数new PDO(),并传入相关的连接信息。 MySQLi(MySQL Improved)是PHP中的一种连接MySQL数据库的扩展,是对原有mysql扩展的增强和改进。MySQLi提供了面向对象和面向过程两种API,支持事务处理、预处理语句、存储过程等功能,同时也提供了对MySQL的新特性的支持。使用MySQLi连接MySQL数据库时,首先需要创建一个MySQLi对象,然后调用相应的方法进行连接、查询等操作。 mysql扩展是PHP早期版本提供的一种连接MySQL数据库的方式,但自PHP5.5.0版本开始已被弃用,不再被推荐使用。mysql扩展的连接方式相对简单,使用mysql_connect()函数进行连接,并传入相关的连接参数。然而,mysql扩展存在一些安全性和兼容性的问题,容易受到SQL注入等攻击。 综上所述,PDOMySQLi和mysql是PHP常用的三种连接MySQL数据库的方式。其中PDO具有较高的安全性和可移植性,使用方式统一;MySQLi支持较多的功能特性,包括事务处理、预处理语句等;mysql扩展已被弃用,不推荐使用。开发者可以根据自己的需求和情况选择合适的连接方式

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值