一、数据库连接设置
首先需要设置好PHP,确认安装了SQL Server 数据库扩展:
http://www.hanyu123.cn/content-12-132-1.html
在ThinkPHP 配置中设置数据库类型为'sqlsrv':
// 数据库类型 'type' => 'sqlsrv',
数据库编码最好使用utf8:
// 数据库编码默认采用utf8 'charset' => 'utf8',
二、SQL语句书写
读取MySQL中的中文名表格时,可以加``,也可以不加,都能正确读取,例如:
dump(Db::name('hsk词汇等级大纲')->select());
dump(Db::name('`hsk词汇等级大纲`')->select());读取SQL Server 时则不能加``,或者使用[]:
dump(Db::name('hsk词汇等级大纲')->select());
dump(Db::name('[hsk词汇等级大纲]')->select());中文字段名也是如此。
三、中文乱码问题的解决
如果设置了utf8编码,读取中文字段时,v值可以正常显示,但k值还是中文乱码:

读取MySQL数据库的中文名数据表和中文字段时,k值和v值都可以正确显示。
但即使SQL Server 是utf8编码,k值也还需要在程序中再转码一次:
$result=$this->toutf8($result);
//转码函数
public function toutf8($Result){
$Row=array();
$key1=array_keys($Result);
$key2=array_keys($Result[$key1[0]]);
foreach ($key2 as $k=>$v){
$key2[$k]=iconv('gbk', 'utf-8', $v);
}
foreach ($Result as $k=>$v){
$value1=array_values($v);
$Row[$k]=array_combine($key2, $value1);
}
return $Row;
}参考资料:
http://www.thinkphp.cn/topic/39279.html
相关文章
![[ThinkPHP] var_dump() 和 dump() 的区别](http://static.hanyu123.cn/uploads/0923/15061794231.jpg)

精彩导读
热门资讯
关注我们