首先说下,我数据库和页面用的都是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']是英文的话一切正常,数据库也能正常存储。
大家说说这是怎么回事,前端要照顾浏览器我还能理解,这存储数据库还照顾不同浏览器?
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']这条语句在数据库执行成功吗?
update `com_class` set `name`='".$_GET["name"]."' where `id`=".$_GET['id']这条语句在数据库执行成功吗?
在IE下英文是能正常存储到数据库中的,只有中文会丢失,我觉得应该是不是SQL语句的问题,应该是编码之类的出了问题,可我明明数据库和PHP页面用的都是utf8编码,按理应该不会出错的啊。
没有看到连接数据库和字符集设置的代码
作为测试,你应该打印出传入的数据
没有看到连接数据库和字符集设置的代码
作为测试,你应该打印出传入的数据
没有看到连接数据库和字符集设置的代码
作为测试,你应该打印出传入的数据
那传入的数据是什么,也被“引用”了吗?
如果你真的想解决问题,最好还是尽可能多的提供信息
没有看到连接数据库和字符集设置的代码
作为测试,你应该打印出传入的数据
IE 与其他浏览器不同之处就在于他严格地遵守规范
这也是太一度被反垄断的原因
那传入的数据是什么,也被“引用”了吗?
如果你真的想解决问题,最好还是尽可能多的提供信息
IE 与其他浏览器不同之处就在于他严格地遵守规范
这也是太一度被反垄断的原因
因为是IE,所以并不奇怪
找到原因了,IE9地址栏不认汉字,在输入数据时用encodeURI编码一下就可以了