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制作unicode解码工具(unicode编码转换器)代码分享
Dec 24 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
Apr 24 PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
Jun 13 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
Jun 24 PHP
PHP实现的增强性mhash函数
May 27 PHP
PHP 数组遍历foreach语法结构及实例
Jun 13 PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 PHP
PHP入门教程之会话控制技巧(cookie与session)
Sep 11 PHP
php版微信发红包接口用法示例
Sep 23 PHP
php获取给定日期相差天数的方法分析
Feb 20 PHP
PHP共享内存使用与信号控制实例分析
May 09 PHP
PHP 实现手机端APP支付宝支付功能
Jun 07 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原理之异常机制深入分析
2010/08/08 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
2015/04/17 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
多个iframe自动调整大小的问题
2006/09/18 Javascript
javascript下查找父节点的简单方法
2007/08/13 Javascript
js 获取屏幕各种宽高的方法(浏览器兼容)
2013/05/15 Javascript
解析页面加载与js函数的执行 onload or ready
2013/12/12 Javascript
js控制浏览器全屏示例代码
2014/02/20 Javascript
jquery form 加载数据示例
2014/04/21 Javascript
js脚本分页代码分享(7种样式)
2015/08/19 Javascript
EasyUI在表单提交之前进行验证的实例代码
2016/06/24 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
2019/07/29 Javascript
前后端常见的几种鉴权方式(小结)
2019/08/04 Javascript
Vuex中实现数据状态查询与更改
2019/11/08 Javascript
js+audio实现音乐播放器
2020/09/13 Javascript
[40:19]2018完美盛典CS.GO表演赛
2018/12/17 DOTA
web.py中调用文件夹内模板的方法
2014/08/26 Python
python搜索指定目录的方法
2015/04/29 Python
Python实现的根据文件名查找数据文件功能示例
2018/05/02 Python
python钉钉机器人运维脚本监控实例
2019/02/20 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
2019/08/12 Python
python try except返回异常的信息字符串代码实例
2019/08/15 Python
Pytorch上下采样函数--interpolate用法
2020/07/07 Python
canvas实现按住鼠标移动绘制出轨迹的示例代码
2018/02/05 HTML / CSS
优秀辅导员事迹材料
2014/02/16 职场文书
小学班干部竞选演讲稿
2014/04/24 职场文书
优秀班主任推荐材料
2014/12/17 职场文书
三八妇女节寄语
2015/02/27 职场文书
七一活动主持词
2015/06/29 职场文书
爱鸟护鸟的宣传语
2015/07/13 职场文书
2016秋季小学开学寄语
2015/12/03 职场文书
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript
2021年国产动漫公司排行前十名,玄机科技上榜,第二推出过铠甲勇士
2022/03/18 杂记
Nginx实现负载均衡的项目实践
2022/03/18 Servers