IE中 mysql存储中文丢失的问题,这个世界太奇怪了

php中文网
发布: 2016-06-23 13:26:38
原创
928人浏览过

首先说下,我数据库和页面用的都是UTF8编码,页面代码如下:

header("Content-type:text/html;charset=utf8");
$result=$mysqli->query("select * from `com_class` where `id`=".$_GET['id']);
if(!($result->fetch_row())){
echo "数据不存在";
exit;
}
$mysqli->query("update `com_class` set `name`='".$_GET["name"]."' where `id`=".$_GET['id']);
echo $_GET['name'];

在谷歌浏览器和火狐浏览器下页面正常显示没有乱码,数据也正常存到数据库中。

在IE9下页面也显示正常,没有报错没有乱码,可是数据库没有存到数据,显示是空的(不是“?”之类的乱码),如果$_GET['name']是英文的话一切正常,数据库也能正常存储。

大家说说这是怎么回事,前端要照顾浏览器我还能理解,这存储数据库还照顾不同浏览器?

存了个图
存了个图

视频图片解析/字幕/剪辑,视频高清保存/图片源图提取

存了个图 17
查看详情 存了个图

回复讨论(解决方案)

update `com_class` set `name`='".$_GET["name"]."' where `id`=".$_GET['id']这条语句在数据库执行成功吗?

update `com_class` set `name`='".$_GET["name"]."' where `id`=".$_GET['id']这条语句在数据库执行成功吗?



在谷歌和火狐能正常存到数据库,那说明肯定执行成功了呀


update `com_class` set `name`='".$_GET["name"]."' where `id`=".$_GET['id']这条语句在数据库执行成功吗?



在谷歌和火狐能正常存到数据库,那说明肯定执行成功了呀
你打印一下$mysqli->error看看



update `com_class` set `name`='".$_GET["name"]."' where `id`=".$_GET['id']这条语句在数据库执行成功吗?



在谷歌和火狐能正常存到数据库,那说明肯定执行成功了呀
你打印一下$mysqli->error看看

试过了,没有任何问题

在IE下英文是能正常存储到数据库中的,只有中文会丢失,我觉得应该是不是SQL语句的问题,应该是编码之类的出了问题,可我明明数据库和PHP页面用的都是utf8编码,按理应该不会出错的啊。

没有看到连接数据库和字符集设置的代码
作为测试,你应该打印出传入的数据

没有看到连接数据库和字符集设置的代码
作为测试,你应该打印出传入的数据



这些代码包含在引用文件里,我这里没写出来,现在的问题是在其他浏览器上数据能存储成功就说明连接和SQL肯定是没问题的,难道你们不这么认为吗。

还是希望有高手或者遇过这种问题的来回答下。

没有看到连接数据库和字符集设置的代码
作为测试,你应该打印出传入的数据



我传入的数据就只有 $_GET["id"] 和  $_GET["name"] 

那传入的数据是什么,也被“引用”了吗?
如果你真的想解决问题,最好还是尽可能多的提供信息

没有看到连接数据库和字符集设置的代码
作为测试,你应该打印出传入的数据



$host="localhost";
$user="root";
$password="";
$datebase="company";
$mysqli  = new mysqli ("$host","$user","$password","$datebase");
/* 检查连接 */
 if ( mysqli_connect_errno ()) {
printf ( "连接失败: %s\n" ,  mysqli_connect_error ());
    exit();
}
$mysqli->set_charset("utf8");

这是连接数据库和设置字符集的代码,包含在另一个文件里,我includ这个文件的

IE 与其他浏览器不同之处就在于他严格地遵守规范
这也是太一度被反垄断的原因

那传入的数据是什么,也被“引用”了吗?
如果你真的想解决问题,最好还是尽可能多的提供信息



除了那2个GET没有传入任何数据,直接在地址栏输入:http://localhost/update.php?id=1&name=张三,在谷歌和火狐浏览器就能正常将张三存到数据库里,IE9下页面没有任何错误提示,就是数据库没存到任何数据,包括原来的数据也没了,就一个空字符

IE 与其他浏览器不同之处就在于他严格地遵守规范
这也是太一度被反垄断的原因



可是存储数据应该跟客户端浏览器没什么关系吧,这些都是在MYSQL里面执行的呀

因为是IE,所以并不奇怪

找到原因了,IE9地址栏不认汉字,在输入数据时用encodeURI编码一下就可以了

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号