首先说下,我数据库和页面用的都是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']这条语句在数据库执行成功吗?
在谷歌和火狐能正常存到数据库,那说明肯定执行成功了呀
你打印一下$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编码一下就可以了