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版(5)
Oct 09 PHP
建立文件交换功能的脚本(一)
Oct 09 PHP
PHP5下$_SERVER变量不再受magic_quotes_gpc保护的弥补方法
Oct 31 PHP
input file获得文件根目录简单实现
Apr 26 PHP
jQuery+php实现ajax文件即时上传的详解
Jun 17 PHP
php实现图片上传并进行替换操作
Mar 15 PHP
PHP处理二进制数据的实现方法
Jun 13 PHP
php结合md5的加密解密算法实例
Sep 30 PHP
php基于闭包实现函数的自调用(递归)实例分析
Nov 11 PHP
PHP实现的curl批量请求操作示例
Jun 06 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
Apr 09 PHP
简单的php购物车代码
Jun 05 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/09/30 PHP
PHP中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
PHP安全上传图片的方法
2015/03/21 PHP
CI框架中数据库操作函数$this->db->where()相关用法总结
2016/05/17 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
PHP里的$_GET数组介绍
2019/03/22 PHP
PHP检测一个数组有没有定义的方法步骤
2019/07/20 PHP
JavaScript的eval JSON object问题
2009/11/15 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
2016/06/21 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
微信小程序 滚动到某个位置添加class效果实现代码
2017/04/19 Javascript
Form表单上传文件(type="file")的使用
2017/08/03 Javascript
ligerUI---ListBox(列表框可移动的实例)
2017/11/28 Javascript
jQuery-ui插件sortable实现自由拖动排序
2018/12/01 jQuery
Vue3.0结合bootstrap创建多页面应用
2019/05/28 Javascript
详解小程序BackgroundAudioManager踩坑之旅
2019/12/08 Javascript
OpenLayers3实现图层控件功能
2020/09/25 Javascript
Django contenttypes 框架详解(小结)
2018/08/13 Python
python编程使用协程并发的优缺点
2018/09/20 Python
详解python中TCP协议中的粘包问题
2019/03/22 Python
Python获取数据库数据并保存在excel表格中的方法
2019/06/12 Python
python如何给字典的键对应的值为字典项的字典赋值
2019/07/05 Python
Python图像处理库PIL的ImageFilter模块使用介绍
2020/02/26 Python
Python pip install之SSL异常处理操作
2020/09/03 Python
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
德国户外商店:eXXpozed
2020/07/25 全球购物
求职信内容考虑哪几点
2013/10/05 职场文书
大学本科毕业生的自我鉴定
2013/11/26 职场文书
专营店会计助理岗位职责
2013/11/29 职场文书
跳槽求职信范文
2014/05/26 职场文书
2014年个人师德工作总结
2014/12/04 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
2016党校学习心得体会
2016/01/07 职场文书
最新农村养殖致富:资金投入较低的创业项目有哪些?
2019/09/26 职场文书
TensorFlow中tf.batch_matmul()的用法
2021/06/02 Python
Python超详细分步解析随机漫步
2022/03/17 Python