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 相关文章推荐
使用sockets:从新闻组中获取文章(三)
Oct 09 PHP
PHP MySQL应用中使用XOR运算加密算法分享
Aug 28 PHP
php验证邮箱和ip地址最简单方法汇总
Oct 30 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
Dec 21 PHP
如何使用PHP给图片加水印
Oct 12 PHP
phpStudy 2016 使用教程详解(支持PHP7)
Oct 18 PHP
详解php语言最牛掰的Laravel框架
Nov 20 PHP
PHP调用微博接口实现微博登录的方法示例
Sep 22 PHP
php 读取文件夹下所有图片、文件的实例
Oct 17 PHP
tp5(thinkPHP5)框架连接数据库的方法示例
Dec 24 PHP
PHP框架实现WebSocket在线聊天通讯系统
Nov 21 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
Mar 04 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学习笔记之基础知识
2014/11/08 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
修改js Calendar日历控件 兼容IE9/谷歌/火狐
2013/01/04 Javascript
javascript的函数作用域
2014/11/12 Javascript
JavaScript中的DSL元编程介绍
2015/03/15 Javascript
JavaScript实现多种排序算法
2016/02/24 Javascript
Vue.JS入门教程之自定义指令
2016/12/08 Javascript
微信小程序 小程序制作及动画(animation样式)详解
2017/01/06 Javascript
JS交互点击WKWebView中的图片实现预览效果
2018/01/05 Javascript
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
JS解惑之Object中的key是有序的么
2019/05/06 Javascript
微信小程序实现张图片合成为一张并下载
2019/07/16 Javascript
EXTJS7实现点击拖拉选择文本
2020/12/17 Javascript
[04:30]显微镜下的DOTA2第五期——拉比克
2013/09/26 DOTA
python下载文件记录黑名单的实现代码
2017/10/24 Python
python 读写中文json的实例详解
2017/10/29 Python
利用Python实现在同一网络中的本地文件共享方法
2018/06/04 Python
详解python算法之冒泡排序
2019/03/05 Python
python实现BP神经网络回归预测模型
2019/08/09 Python
Numpy的简单用法小结
2019/08/28 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
2020/02/26 Python
使用Django实现把两个模型类的数据聚合在一起
2020/03/28 Python
python字典按照value排序方法
2020/12/28 Python
用CSS3实现瀑布流布局的示例代码
2017/11/10 HTML / CSS
纯css实现照片墙3D效果的示例代码
2017/11/13 HTML / CSS
法律六进活动方案
2014/03/13 职场文书
企业宣传策划方案
2014/05/29 职场文书
支部组织生活会方案
2014/06/10 职场文书
质量在我心中演讲稿
2014/09/02 职场文书
戒毒悔改检讨书
2014/09/21 职场文书
幼儿园门卫安全责任书
2015/05/08 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书
2016年九九重阳节活动总结
2016/04/01 职场文书
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
2021/06/11 Python
redis中lua脚本使用教程
2021/11/01 Redis