PHP 使用 MySQLi 对数据库进行 insert 操作时报错 Data truncated for column 'xxx' at row 1

Published at:
Updated at:
Tags: PHP

PHP 在 MySQLi 使用 SQL 语句INSET INTO student (sid, name, age, sex, uid) values (123, '123', '123', '男', 1)对数据库进行操作时出现了"Data truncated for column 'xxx' at row 1"的错误信息。

问题原因与解决方法

这里以面向对象方法为例。

在数据库表创建时使用了default charset=utf8,但创建 mysqli 对象后没有使用set_charset()方法并填入参数"utf-8",并且因为这条 SQL 语句中包含了中文字符,所以出现了报错。

--数据库创建表时使用了default charset=utf8
CREATE TABLE user (
   id int auto_increment primary key,
   uname varchar(20) not null,
   pwd varchar(20) not null
)default charset=utf8;
$conn = new mysqli("localhost", "root", "", "student_management", 3306);

// 在创建mysqli对象后设置charset为utf-8
$conn->set_charset("utf8");