php mssql扩展SQL查询中文字段名解决方法


Posted in PHP onOctober 15, 2012

一、问题:

数据库是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语句编码转换。下面贴出我的范例代码:

//编码转换函数 
function utf8togb($s) { 
return iconv('utf-8', 'gbk//IGNORE', $s); // IGNORE 参数是遇到不成转换的字符时忽略 
} 
//建议把所有中文字段用英文别名替换,方便下面操作还有编码转换等问题 
$sql="SELECT [id], [栏目] as typeid, [正题] as title, [作者] as author, convert(text, [正文]) as body FROM [文章表];"; 
$sql = utf8togb($sql);
PHP 相关文章推荐
搜索引擎技术核心揭密
Oct 09 PHP
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
Oct 09 PHP
优化使用mysql存储session的php代码
Jan 10 PHP
php 日期时间处理函数小结
Dec 18 PHP
smarty基础之拼接字符串的详解
Jun 18 PHP
分享8个最佳的代码片段在线测试网站
Jun 29 PHP
php获得url参数中具有&的值的方法
Mar 05 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
Jul 01 PHP
php程序内部post数据的方法
Mar 31 PHP
Yii框架中sphinx索引配置方法解析
Oct 18 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
Apr 27 PHP
PHP单文件上传原理及上传函数的封装操作示例
Sep 02 PHP
PHP获取文件后缀名的三个函数
Oct 15 #PHP
php标签云的实现代码
Oct 10 #PHP
域名和cookie问题(域名后缀)
Oct 10 #PHP
记录PHP错误日志 display_errors与log_errors的区别
Oct 09 #PHP
php在程序中将网页生成word文档并提供下载的代码
Oct 09 #PHP
php排序算法(冒泡排序,快速排序)
Oct 09 #PHP
php全排列递归算法代码
Oct 09 #PHP
You might like
php str_pad 函数用法简介
2009/07/11 PHP
php更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
php+js实现百度地图多点标注的方法
2016/11/30 PHP
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
js常用排序实现代码
2010/12/28 Javascript
js 创建书签小工具之理论
2011/02/25 Javascript
jquery select多选框的左右移动 具体实现代码
2013/07/03 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
smartcrop.js智能图片裁剪库
2015/10/14 Javascript
AngularJs directive详解及示例代码
2016/09/01 Javascript
vue项目部署上线遇到的问题及解决方法
2018/06/10 Javascript
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
详解Angular6.0使用路由步骤(共7步)
2018/06/29 Javascript
JS实现十分钟倒计时代码实例
2018/10/18 Javascript
js实现简单的无缝轮播效果
2020/09/05 Javascript
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
Python中zip()函数用法实例教程
2014/07/31 Python
bat和python批量重命名文件的实现代码
2016/05/19 Python
Windows下将Python文件打包成.EXE可执行文件的方法
2018/08/03 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
如何基于python对接钉钉并获取access_token
2020/04/21 Python
Python数据相关系数矩阵和热力图轻松实现教程
2020/06/16 Python
在Pycharm中安装Pandas库方法(简单易懂)
2021/02/20 Python
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
HTML5 图片悬停放大的实现代码示例
2019/12/04 HTML / CSS
请说出你所知道的线程同步的方法
2013/04/19 面试题
一套英文Java笔试题面试题
2016/04/21 面试题
办公室人员先进事迹
2014/01/27 职场文书
学校安全工作汇报材料
2014/08/16 职场文书
2015年党风建设工作总结
2015/04/29 职场文书
圣诞晚会主持词开场白
2015/05/28 职场文书
2015大学生入党个人自传
2015/06/26 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书
 分享一个Python 遇到数据库超好用的模块
2022/04/06 Python
Go语言怎么使用变长参数函数
2022/07/15 Golang