首页 后端开发 PHP问题 php放入数据库的信息乱码怎么办

php放入数据库的信息乱码怎么办

Mar 07, 2023 am 09:52 AM
php 数据库 乱码

php放入数据库的信息乱码的解决办法:1、修改HTML文件编码为“”;2、在PHP文件中添加“header("Content-Type:text/html;charset=utf-8");”;3、通过在控制台窗口中输入“set names gbk;charset gbk;”设置MySQL编码;4、重启浏览器和服务器即可。

php放入数据库的信息乱码怎么办

本教程操作环境:windows7系统、PHP5.4版、DELL G3电脑

php放入数据库的信息乱码怎么办?

php写入mysql数据库的中文乱码问题

一、问题呈现

以下为两个关键的文件。其中的html向用户获取数据输入,php实现将这些数据写入到数据库。

18.8.html

<!doctype html><html><head>
	<meta charset="utf-8" /><title>添加信息</title></head><body>
	<h2>添加员工信息</h2>
	<form action="18.8.php" method="post" >
		员工姓名:		<input name="name" type="text" size="20" /> <br />
		员工年龄:		<input name="age" type="text" size="3" /> <br/>
		员工工资:		<input name="salary" type="text" size="6" /> <br />
		<input name="submit" type="submit" value="上传数据" />
	</form></body></html>
登录后复制

18.8.php

<?php
header("Content-Type:text/html;charset=utf-8");
$name = $_POST[&#39;name&#39;];
$age = $_POST[&#39;age&#39;];
$salary = $_POST[&#39;salary&#39;];

$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "mytest";

// 创建连接
$db = new mysqli($servername,$username,$password,$dbname);
$db->query("SET NAMES gbk");
//检测连接
if(!$db){
	die("数据库连接失败:".mysqli_connect_error());
}
//$q = "select * from employee";
$q = "INSERT INTO employee(name,age,salary)
VALUES('$name',$age,$salary)";

if(!mysqli_query($db,$q)){
	echo "员工信息添加失败";
}else{
	echo "员工信息已经成功添加";
};
mysqli_close($db);
?>
登录后复制
  1. 搭建了本地测试站点mytest,将这两个文件置于站点文件夹下。在这里插入图片描述

  2. 启动phpstudy

7340dc4c89e6a5624e4492d52d47969.jpg

  1. 在mysql中创建所需的数据库的数据表,代码如下
create database mytest;use mytest;create table employee(
	id integer primary key,
	name char(10),
	age integer,
	salary float);
登录后复制

1b632b264636b612c8aebbe18c5f826.jpg

  1. 在浏览器中访问网址
   http://localhost:80/mytest/18.8.html
登录后复制

PS:访问站点时的端口号需要与站点设置的端口号相同,这里设置站点时指定端口为80,
41e52b1c71994b27f8ac06501d2967c.jpg

  1. 输入数据,点击上传数据

7e169503896e91bfe2e45d73a3bca5f.jpg

跳转到18.8.php页面,提示数据添加成功
d39c8cc9819c7ef7969923c6b492da1.jpg

  1. 在mysql控制台中查看已添加的数据

    代码如下

   set names gbk;
   charset gbk;
   set character_set_server=gbk;
   set character_set_database=gbk;
   select * from employee;
登录后复制

PS:前四行代码用于设置mysql的编码格式,使mysql能够正常显示中文。

输出结果如下:

在这里插入图片描述

问题出现,即name对应的数据李逍遥被显示为乱码鏉庨?閬


二、问题处理

不难猜测,这个中文乱码问题和htmlphpmysql的编码不一致有关。

根据测试,按照如下进行修改即可。

1.对于18.8.html

	<meta charset="utf-8" />
登录后复制

改为

	<meta charset="gbk" />
登录后复制

即指定18.8.html的编码为gbk

2.对于18.8.php

保持

header("Content-Type:text/html;charset=utf-8");
登录后复制

不变。

即保持18.8.php的编码格式为utf-8

3.对于mysql

在控制台窗口中输入如下代码

set names gbk;charset gbk;set character_set_server=gbk;set character_set_database=gbk;
登录后复制

即设置mysql的编码为gbk

4.删除之前录入的信息

代码如下

use mytest;delete from employee;
登录后复制

显示删除成功

在这里插入图片描述

5.重新录入数据

07a1c8bbd25ceccc91ae2e43f3243f2.jpg

0691d7385d350ad5d1bd0b48672e783.jpg

6.在数据库中查看录入的数据
use mytest;select * from employee;
登录后复制

在这里插入图片描述

中文显示成功!

三、问题分析及补充

上述流程,很好地印证我们的猜测——这个中文乱码问题和htmlphpmysql的编码不一致有关。

解决问题的关键,便是将编码格式进行统一。

我们将html和mysql设置为gbk编码。

那么问题来了!

1.为什么php的编码格式不用与html和mysql进行统一呢?

因为html从用户获取输入,则这些数据遵循与该html页面相同的编码格式,即gbk。

在18.8.php中,仅仅只是将获取的数据写入mysql数据库,没有对接收到的数据进行二次处理(比如编码),所以php的编码格式为utf-8时,对于该中文乱码问题无直接影响,可以不进行修改。

在mysql中,因为从页面中获取并写入的数据遵循gbk编码,所以只需要设置mysql的编码格式为gbk,即可正常显示中文数据了。

2.我把php的编码格式也设置为gbk,怎么php页面也出现乱码了?

即改header为

header("Content-Type:text/html;charset=gbk");
登录后复制

php页面显示为
在这里插入图片描述

这时同样出现中文乱码的情况,不同的是,这是由于php页面本身的编码不匹配导致。

3.为什么我一波操作下来,还是中文乱码呀?

在我撰写这篇博客的期间,不止一次遇到这样的情况。

所有的操作都准确无误,但是结果依然是乱码,和原来的结果没有任何区别。

如果您也遇到这样的问题,可以尝试:

  • 重启浏览器和服务器(即phpstudy)

  • 清理浏览器缓存

  • 重新输入数据(这是必须的)

  • 更换浏览器做测试

推荐学习:《PHP视频教程

以上是php放入数据库的信息乱码怎么办的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
PHP行动:现实世界中的示例和应用程序 PHP行动:现实世界中的示例和应用程序 Apr 14, 2025 am 12:19 AM

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP和Python:代码示例和比较 PHP和Python:代码示例和比较 Apr 15, 2025 am 12:07 AM

PHP和Python各有优劣,选择取决于项目需求和个人偏好。1.PHP适合快速开发和维护大型Web应用。2.Python在数据科学和机器学习领域占据主导地位。

PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP:处理数据库和服务器端逻辑 PHP:处理数据库和服务器端逻辑 Apr 15, 2025 am 12:15 AM

PHP在数据库操作和服务器端逻辑处理中使用MySQLi和PDO扩展进行数据库交互,并通过会话管理等功能处理服务器端逻辑。1)使用MySQLi或PDO连接数据库,执行SQL查询。2)通过会话管理等功能处理HTTP请求和用户状态。3)使用事务确保数据库操作的原子性。4)防止SQL注入,使用异常处理和关闭连接来调试。5)通过索引和缓存优化性能,编写可读性高的代码并进行错误处理。

PHP的目的:构建动态网站 PHP的目的:构建动态网站 Apr 15, 2025 am 12:18 AM

PHP用于构建动态网站,其核心功能包括:1.生成动态内容,通过与数据库对接实时生成网页;2.处理用户交互和表单提交,验证输入并响应操作;3.管理会话和用户认证,提供个性化体验;4.优化性能和遵循最佳实践,提升网站效率和安全性。

在PHP和Python之间进行选择:指南 在PHP和Python之间进行选择:指南 Apr 18, 2025 am 12:24 AM

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

PHP和Python:深入了解他们的历史 PHP和Python:深入了解他们的历史 Apr 18, 2025 am 12:25 AM

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

为什么要使用PHP?解释的优点和好处 为什么要使用PHP?解释的优点和好处 Apr 16, 2025 am 12:16 AM

PHP的核心优势包括易于学习、强大的web开发支持、丰富的库和框架、高性能和可扩展性、跨平台兼容性以及成本效益高。1)易于学习和使用,适合初学者;2)与web服务器集成好,支持多种数据库;3)拥有如Laravel等强大框架;4)通过优化可实现高性能;5)支持多种操作系统;6)开源,降低开发成本。

See all articles