来源:自学PHP网 时间:2014-11-27 22:16 作者: 阅读:次
[导读] 一、问题:数据库是MS SQLServer2000,要把SQLServer2000里的一张表的数据导入MySQL5,其中SQLServer2000表的字段以简体中文命名(强烈建议不要以中文做为字段名),其实操作就是对SQLServer查询记录,....
php mssql扩展SQL查询中文字段名解决方法一、问题: 数据库是MS SQLServer2000,要把SQLServer2000里的一张表的数据导入MySQL5,其中SQLServer2000表的字段以简体中文命名(强烈建议不要以中文做为字段名),其实操作就是对SQLServer查询记录,插入到MySQL里,选择的脚本语言是PHP,PHP打开MSSQL和MySQL扩展,对这两个数据库操作都是很容易的问题. 问题就出现在SQLServer中表的字段名是中文,写好的查询语句在SQLServe里测试是通过有记录返回,用PHP的MSSQL扩展查询就是报错。 上网查了资料,网上相关的信息不太多,很多网友都认为是PHP的MSSQL扩展不支持SQL语句中有中文,查了一下资料,PHP的MSSQL是支持SQL中有中文的语句,出现报错问题大多是因为编码的问题,编码数据库和编码与查询语句编码不统一,查询语句到SQLServer里中文部分就成了乱码,造成查询失败. 二、解决方法: 知道了原因,接下来分析解决,确认是编码不统一的问题,解决分以下几步: 1、确认SQLServer 数据库的编码,我的数据编码是GBK. 2、确认当前PHP脚本文件的编码,我的编码是UTF-8. 3、转换SQL查询语句的的编码. 补充:有的网友提到要把PHP的脚本文件编码转成和数据库编码一致,其实这一步大可不必,只要确认你的SQL语句和数据库的编码一致就可以,这里建议不必转换的原因是如果你的PHP脚本文件里包含其它PHP脚本,那也得对所有include或require的脚本文件编码转换,不然PHP脚本编码不统一很容易出错,若互相关联的文件很多,这也是一件很麻烦的问题而且把事情复杂化了. 三、方案: 写一个转换函数,在把SQL操作前把SQL语句编码转换,下面贴出我的范例代码:
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com