为什么80%的码农都做不了架构师?>>>   

首先说下我的环境,thinkphp版本3.1  php版本5.2.6  sqlserver2005  mysql版本5.2

最近做一个项目需要连接已有项目的sqlserver数据库来得到一些数据,我们直接的数据库是mysql 所以就需要切换数据库连接。之前没整过这个,现在查开发手册,发现切换不同的mysql数据库里面介绍的挺简单,实现起来也挺容易。但是配置链接mssql就有点问题了。于是乎在网上查各种资料,也是少的可怜,且大部分都是粘贴复制同一个人的,而且介绍的还不详细。配置不成功。于是乎继续查手册,看看能不能发现点蛛丝马迹。还真让我发现了。废话不多说,直接上代码:配置文件里面

//'配置项'=>'配置值'
'DB_TYPE'   => 'mysql', // 数据库类型
'DB_HOST'   => 'localhost',// 服务器地址
'DB_NAME'   => 'clinic' , // 数据库名
'DB_USER'   => 'root', // 用户名
'DB_PWD'     => '***', // 密码
'DB_PORT'   => 3306, // 端口
'DB_PREFIX' => '', // 数据库表前缀
'DB_PREFIX'         =>  '',
'DB_DEPLOY_TYPE' => 0, // 数据库部署方式 0 集中式 1 分布式 0
'DB_RW_SEPARATE' => FALSE, // 数据库是否需要读写分离 分布式部署下有效
'DB_MASTER_NUM' => 1, // 设置读写分离后 主服务器数量 1
//'DB_SLAVE_NO' => , // 设置读写分离后 指定从服务器序号(3.1新增)
'DB_SQL_BUILD_CACHE'=> FALSE, // 数据库查询的SQL创建缓存 FALSE
'DB_SQL_BUILD_QUEUE'=> 'file', // SQL缓存队列的缓存方式 file
'DB_SQL_BUILD_LENGTH'=> 20, // SQL缓存的队列长度 20
'DB_SQL_LOG' => FALSE, // 是否开启SQL日志记录(3.1新增) FALSE
'DB_CONFIG2' => 'mssql://sa:sanyue@Admin/test'

注意最下面一行代码。对这个就是连接mssql语句的配置语句,sanyue为数据库密码,@是个分隔符,Admin是我本机的名字,test是我的mssql数据库

当然你要确保ThinkPHP\Lib\Think\Db\Driver下有DbMssql.class.php这个驱动,没有的话去github上下一个,网上有的下载的有问题。

当然在配置前肯定是要开启mssql支持的,查看是不是支持就要看看phpinfo()函数输出的有没有mssql了,如果没有就在配置文件中修改下,把下面两行前面的”;“去掉。

extension=php_mssql.dll

extension=php_pdo_mssql.dll

当然还要开启mssql.allow_persistent = Off

将Off变成on

如果还不行,那就去下载去mssql官网下载,得到的是一个自解压的exe,运行解压后会获取好多dll,其中52表示5.2版本的php,53表示5.3版本的php,nt表示线程安全的,nts表示非线程安全的,vc6、vc9表示的是编译这个dll所使用的vc++编译器版本,基本上大多数时候,选vc6的;将自己php对应的扩展,比如我的是php_sqlsrv_52_nts_vc6.dll放到php安装目录ext文件夹下
然后修改php.ini在适当的地方加上一行:
extension=php_sqlsrv_52_nts_vc6.dll

当然这些之前你都要确保C盘windows文件夹里面有ntwdblib.dll,php_mssql.dll这两个dll,以上操作昨晚基本就应该可以支持mssql了,这时只需要在thinkphp里面新建立一个model类,比如我的

class AdvModel extends Model
{
    public function querySQL($sql)
    {
        $result=$this->db(1,"DB_CONFIG2");
        $result=$this->query($sql);
        return $result;
    }
}在控制器就可以调用querySQl来获取查询结果

中文乱码解决办法是在DbMssql.class.php中修改getALL函数,  $result[] = $row;赋值前先执行下边的代码

$ct=count($row);
                foreach($row as $key=>$value)
                {
                    $row[$key]=iconv('gbk','utf-8',$row[$key]);
                }
                  $result[]   =   $row;

网上有人说$result[]   =   $row; 
改为:
$result[] = auto_charset($row, gb2312, utf8)  但是我试下是不行的。

转载于:https://my.oschina.net/qqwang/blog/152994

thinkphp链接mssql以及查询中文乱码问题相关推荐

  1. freetds php mssql 中文乱码,PHP读取mssql json数据中文乱码的解决办法

    PHP及网页使用UTF-8编码,数据库是sql server2008,使用默认编码(936,即GBK编码) 当读取数据库数据时,使用php自带的json_encode()返回到前端,结果中文不显示. ...

  2. 解决在英文版MSSQL中插入中文乱码的问题

    解决在英文版MSSQL中插入中文乱码的问题 英文版的MSSQL(据说还有Access,但是我没用过)中直接在SQL语句中插入中文最终会显示??? 但是在中文版的管理器中插入中文却没有问题. 解决的方法 ...

  3. oracle11g怎么显示中文,ORACLE11G中PLSQL中文显示乱码、Linux下sqlplus查询中文乱码

    问题描述: 本地是win7操作系统,cmd里面sqlplus进去连接oracle数据库,中文可以正常显示,但是plsql连接oracle数据库,中文显示乱码,还有xshell远程连接oracle服务器 ...

  4. php mysql查询中文乱码_解决php mysql查询插入中文乱码问题_PHP教程

    解决php mysql查询插入中文乱码问题 一.中文问题其实就是经统一编码了否则就会乱码 1.数据库与php页面编码统一 2.数据库数据表字段与页面编码统一 如果做到上面两种就不存在中文乱码问题了,那 ...

  5. php mysql 查询中文乱码_PHP查询MySQL返回中文乱码问题!!!

    先说明我的PHP+Apache+MySQL平台各个方面的设置--安装MySQL的时候选定字符集为GBK,php.ini的"default_charset"选项也设置为GBK,至于我 ...

  6. PLSQL查询中文乱码

    显示乱码: 解决办法: 首先查看数据库字符集 select userenv('language') from dual: 方式一:在环境变量中添加并设置变量 变量名:NLS_LANG: 变量值:查询出 ...

  7. MaxCompute客户端在windows命令行下查询中文乱码怎么办?

    MaxCompute客户端工具是阿里云大数据计算服务MaxCompue产品官方客户端工具,通过客户端工具可以连接MaxCompute项目,完成包括数据管理.数据上下传.作业执行.用户及授权管理等各项操 ...

  8. Access查询中文乱码

    现象:今天用Access数据库做一个简单的查询,查询中某一列内容为中文,直接用select语句查询没有问题,当把查询保存为视图的时候,打开视图中文列就乱码了. 解决过程:1.怀疑是编码问题,可是直接打 ...

  9. json数据条件查询,json数据sql查询中文乱码

    json 解析  分页  条件查询 从数据库中查询出来的json数据乱码可以使用 json_extract(json字段,'$') json字段 这个是json数据的条件查询 <sql id=& ...

最新文章

  1. C++ 面向对象(三)异常 :异常概念、异常的匹配规则、异常安全、异常体系
  2. mysql5.6修改默认目录_MySQL修改默认存储路径
  3. 我心中的ASP.NET Core 新核心对象WebHost(一)
  4. Android开发笔记(一百七十八)更安全的数据仓库DataStore
  5. 理解运算符优先级(简单易懂,建议收藏)
  6. js选择html元素,JavaScript中获取HTML元素值的三种方法
  7. 并发编程常见面试题总结三
  8. APP开发策划方案怎么写?
  9. 数据结构课程设计——学生成绩查询与分析系统(简单详细版,含讲解)
  10. 数据挖掘之模糊集与模糊逻辑
  11. FPN网络详解——feature pyramid network
  12. 如何修改图像尺寸?教你两招轻松修改图像宽高像素
  13. petalinux 设备树驱动GPIOLED
  14. 曾经跨过山和大海的百度AI技术汇,跨进北工大!
  15. 钟平逻辑英语语法_关于钟平的逻辑英语
  16. php 获取ascii码,PHP实现ASCII码与字符串相互转换的方法
  17. iOS地图定位导航与大头针的简单使用
  18. android怎么监听当前应用被卸载
  19. 如何使用新一代轻量级分布式日志管理神器 Graylog 来收集日志
  20. 删除无法删除的文件/文件夹

热门文章

  1. 我总有办法让你今晚回不了家...
  2. 总监调岗至前台,企业被判赔偿26万,法院:“侮辱性调岗”违法
  3. 万物互联的千亿级通信云市场,开发者机会在哪里
  4. vmware 上部署 kvm虚拟机
  5. 后端常用开源组件合集(持续更新中)
  6. Jsp/Servlet:实现文件上传与下载
  7. URL/URI/URN的认识
  8. 阿里巴巴、腾讯与亚马逊相比,究竟差在哪儿?
  9. 用Spring Web Flow和Terracotta搭建Web应用
  10. 未能找出类型或命名空间名称“T” 问题的解决方案