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 相关文章推荐
怎样在php中使用PDF文档功能
Oct 09 PHP
简单的php写入数据库类代码分享
Jul 26 PHP
解析php获取字符串的编码格式的方法(函数)
Jun 21 PHP
php另类上传图片的方法(PHP用Socket上传图片)
Oct 30 PHP
php数组索引与键值操作技巧实例分析
Jun 24 PHP
Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
Mar 07 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
Mar 21 PHP
CodeIgniter连贯操作的底层原理分析
May 17 PHP
Yii实现复选框批量操作实例代码
Mar 15 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
Sep 22 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
May 30 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
Oct 20 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数学运算
2011/12/30 PHP
php针对cookie操作的队列操作类实例
2014/12/10 PHP
php实现cookie加密的方法
2015/03/10 PHP
深入浅析Yii admin的权限控制
2016/08/31 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
JS解决url传值出现中文乱码的另类办法
2013/04/08 Javascript
js中数组排序sort方法的原理分析
2014/11/20 Javascript
JS控制网页动态生成任意行列数表格的方法
2015/03/09 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
2017/02/15 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
微信小程序控制台提示warning:Now you can provide attr "wx:key" for a "wx:for" to improve performance解决方法
2019/02/21 Javascript
JS数组方法shift()、unshift()用法实例分析
2020/01/18 Javascript
解决echarts echarts数据动态更新和dataZoom被重置问题
2020/07/20 Javascript
[01:01:35]Optic vs paiN 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
在Python中使用mongoengine操作MongoDB教程
2015/04/24 Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
2017/07/07 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
2018/06/14 Python
Python中字符串与编码示例代码
2019/05/20 Python
pandas DataFrame创建方法的方式
2019/08/02 Python
django框架两个使用模板实例
2019/12/11 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
2020/06/28 Python
Sentry错误日志监控使用方法解析
2020/11/12 Python
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
迪奥官网:Dior.com
2018/12/04 全球购物
美国价格实惠的在线眼镜网站:Zeelool
2020/12/25 全球购物
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
《只有一个地球》教学反思
2014/02/14 职场文书
项目建议书格式
2014/03/12 职场文书
党的群众路线教育实践活动总结报告
2014/04/28 职场文书
教师党员自我剖析材料
2014/09/29 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
余世维讲座观后感
2015/06/11 职场文书
城南旧事电影观后感
2015/06/16 职场文书
祝福语集锦:送给闺蜜的生日祝福语
2019/10/08 职场文书
MySQL COUNT函数的使用与优化
2021/05/10 MySQL
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python