php mssql扩展SQL查询中文字段名解决办法
发布时间:2022-02-18 00:05:08 所属栏目:PHP教程 来源:互联网
导读:一、问题: 数据库是MS SQLServer2000,要把SQLServer2000里的一张表的数据导入MySQL5,其中SQLServer2000表的字段以简体中文命名(强烈建议不要以中文做为字段名),其实操作就是对SQLServer查询记录,插入到MySQL里,选择的脚本语言是PHP,PHP打开MSSQL和MySQL扩展
一、问题: 数据库是MS SQLServer2000,要把SQLServer2000里的一张表的数据导入MySQL5,其中SQLServer2000表的字段以简体中文命名(强烈建议不要以中文做为字段名),其实操作就是对SQLServer查询记录,插入到MySQL里,选择的脚本语言是PHP,PHP打开MSSQL和MySQL扩展,对这两个数据库操作都是很容易的问题. 问题就出现在SQLServer中表的字段名是中文,写好的查询语句在SQLServe里测试是通过有记录返回,用PHP的MSSQL扩展查询就是报错。 二、解决方法: 知道了原因,接下来分析解决,确认是编码不统一的问题,解决分以下几步: 1、确认SQLServer 数据库的编码,我的数据编码是GBK. 2、确认当前PHP脚本文件的编码,我的编码是UTF-8. 3、转换SQL查询语句的的编码. 三、方案: 写一个转换函数,在把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 [文章表];"; //开源代码Cuoxin.com $sql = utf8togb($sql); (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |