每天学习一点点,成功增加一大步

解决mysql下1366 Incorrect string value错误

MYSQL zhanghui 28℃

这个错误是字符编码的问题 , 因为内容里有可能有表情等特殊字符 , 需要使用utf8mb4编码

重点还有一个是 , 在php代码中连接上mysql后一定要执行一下 set name utf8mb4 否则也是不行的

比如下面这个表的字符编码

create table table_name(
    id int unsigned auto_increment,
)engine=innodb charset=utf8mb4;

比如下面的PHP代码:

$this->pdo->exec("set names utf8mb4");

这里说明一点:utf8mb4 是向下兼容 utf8 的,意思是,如果之前的数据库和数据表设置的编码是 utf8,php 通过 set names utf8mb4 来读写 utf8 的数据库(表)是正常的,但如果要输入特殊字符的话就必须修改数据库(表)的编码为 utf8mb4 。

2022-11-04 记:

utf8mb4的最低mysql版本支持版本为5.5.3+,若不是,请升级到较新版本。不然中文会变成乱码的现象

因此如果要兼容低版本的目的,就必须做 mysql 版本号的判断,如:

if (mysqli_get_server_version(self::$conn) >= 50530) {
    mysqli_set_charset(self::$conn, 'utf8mb4');
} else {
    mysqli_set_charset(self::$conn, 'utf8');
}

转载请注明:隨習筆記 » 解决mysql下1366 Incorrect string value错误

喜欢 (0)