加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php mssql扩展SQL查询中文字段名解决办法

发布时间:2022-02-18 01:16:43 所属栏目: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);
 

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读