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中的实现trim函数代码
Mar 19 PHP
php 数学运算验证码实现代码
Oct 11 PHP
php操作excel文件 基于phpexcel
Jul 02 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
Nov 02 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
Jun 21 PHP
33道php常见面试题及答案
Jul 06 PHP
PHP下载远程图片并保存到本地方法总结
Jan 22 PHP
php数组函数array_walk用法示例
May 26 PHP
php基于PDO实现功能强大的MYSQL封装类实例
Feb 27 PHP
PHP使用redis消息队列发布微博的方法示例
Jun 22 PHP
PHP抽象类与接口的区别详解
Mar 21 PHP
Laravel框架之解决前端显示图片问题
Oct 24 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
收音机术语解释
2021/03/01 无线电
6种php上传图片重命名的方法实例
2013/11/04 PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
2015/12/31 PHP
Thinkphp 框架扩展之应用模式实现方法分析
2020/04/27 PHP
ASP.NET jQuery 实例2 (表单中使用回车在TextBox之间向下移动)
2012/01/13 Javascript
jquery二级导航内容均分的原理及实现
2013/08/13 Javascript
JS关闭窗口与JS关闭页面的几种方法小结
2013/12/17 Javascript
浅谈JavaScript 框架分类
2014/11/10 Javascript
jQuery的remove()方法使用详解
2015/08/11 Javascript
jquery轮播的实现方式 附完整实例
2016/07/28 Javascript
jQuery Validate表单验证插件的基本使用方法及功能拓展
2017/01/04 Javascript
Vuejs实现带样式的单文件组件新方法
2017/05/02 Javascript
vue教程之toast弹框全局调用示例详解
2020/08/24 Javascript
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
Vue中控制v-for循环次数的实现方法
2018/09/26 Javascript
浅谈Vue开发人员的7个最好的VSCode扩展
2021/01/20 Vue.js
[01:02:09]Liquid vs TNC 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21
2020/07/19 DOTA
举例详解Python中的split()函数的使用方法
2015/04/07 Python
Python最基本的输入输出详解
2015/04/25 Python
python魔法方法-属性转换和类的表示详解
2016/07/22 Python
利用python求相邻数的方法示例
2017/08/18 Python
Python 绘图库 Matplotlib 入门教程
2018/04/19 Python
Flask框架请求钩子与request请求对象用法实例分析
2019/11/07 Python
Python关于反射的实例代码分享
2020/02/20 Python
后勤人员自我评价怎么写
2013/09/19 职场文书
会计电算化专业毕业生自荐信
2013/12/20 职场文书
《只有一个地球》教学反思
2014/02/14 职场文书
大学老师推荐信
2014/02/25 职场文书
共筑中国梦演讲稿
2014/04/23 职场文书
初一新生军训方案
2014/05/22 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
2015年学生会纪检部工作总结
2015/03/31 职场文书
工作汇报材料难写?方法都在这里了!
2019/07/01 职场文书
JavaScript实现优先级队列
2021/12/06 Javascript
python如何将mat文件转为png
2022/07/15 Python
Spring boot admin 服务监控利器详解
2022/08/05 Java/Android