全部改成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(>ω
phone
bigint(12) NOT NULL DEFAULT 0 COMMENT ‘手机’ ,
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了