php 插入MySQL中文乱码问题

参考文章 MYSQL 插入中文乱码解决方案
在用php插入中文时在数据库看到的是乱码,

$sql= "insert into login(username, password, passwordMD5, email, registerDate)values('$username','$password','$passwordMD5','$email',NOW())";
在这里插入图片描述
show create table [table_name]来看
php 插入MySQL中文乱码问题_第1张图片
默认charset 是utf8没问题,接着试着直接在终端插入中文,发现可以显示中文,
php 插入MySQL中文乱码问题_第2张图片
参考文章设置MySQL的设置文件my.cnf,发现里面没有可以设置的东西。接着尝试

2.2 设置连接编码
  设置了服务器、数据库和数据表部分的编码,必须设置连接编码。连接编码设置如下:
  mysql> SET character_set_client=‘gbk’;
  mysql> SET character_set_connection=‘gbk’
  mysql> SET character_set_results=‘gbk’
  设置好连接编码,下面便可以成功插入中文了:
  mysql> insert into mysqlcode values(null,‘java爱好者’);
  Query OK, 0 rows affected (0.02 sec)
  
  其实,上面设置连接编码的三条命令可以简化为一条:
  mysql> set names ‘gbk’;
————————————————
来自CSDN博主「xiaowu0212」的原创文章

发现无论是已经存在的乱码还是新插入的中文数据依然是乱码,接着尝试

每次执行insert或update或select连接操作时,都必须设置编码,即在前面加上:set names ‘utf8’;

然后查找了一番如何用php插入多条数据,

    $sql = "set names 'utf8';";
    //用 .= 来连接
    $sql .= "insert into articles(title,author,content)values('$title','青苔','$content');";
    //php查询语句改成 multi query
    mysqli_multi_query($link,$sql)

成功解决。

你可能感兴趣的:(php 插入MySQL中文乱码问题)