thinkphp链接mssql以及查询中文乱码问题
为什么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以及查询中文乱码问题相关推荐
- freetds php mssql 中文乱码,PHP读取mssql json数据中文乱码的解决办法
PHP及网页使用UTF-8编码,数据库是sql server2008,使用默认编码(936,即GBK编码) 当读取数据库数据时,使用php自带的json_encode()返回到前端,结果中文不显示. ...
- 解决在英文版MSSQL中插入中文乱码的问题
解决在英文版MSSQL中插入中文乱码的问题 英文版的MSSQL(据说还有Access,但是我没用过)中直接在SQL语句中插入中文最终会显示??? 但是在中文版的管理器中插入中文却没有问题. 解决的方法 ...
- oracle11g怎么显示中文,ORACLE11G中PLSQL中文显示乱码、Linux下sqlplus查询中文乱码
问题描述: 本地是win7操作系统,cmd里面sqlplus进去连接oracle数据库,中文可以正常显示,但是plsql连接oracle数据库,中文显示乱码,还有xshell远程连接oracle服务器 ...
- php mysql查询中文乱码_解决php mysql查询插入中文乱码问题_PHP教程
解决php mysql查询插入中文乱码问题 一.中文问题其实就是经统一编码了否则就会乱码 1.数据库与php页面编码统一 2.数据库数据表字段与页面编码统一 如果做到上面两种就不存在中文乱码问题了,那 ...
- php mysql 查询中文乱码_PHP查询MySQL返回中文乱码问题!!!
先说明我的PHP+Apache+MySQL平台各个方面的设置--安装MySQL的时候选定字符集为GBK,php.ini的"default_charset"选项也设置为GBK,至于我 ...
- PLSQL查询中文乱码
显示乱码: 解决办法: 首先查看数据库字符集 select userenv('language') from dual: 方式一:在环境变量中添加并设置变量 变量名:NLS_LANG: 变量值:查询出 ...
- MaxCompute客户端在windows命令行下查询中文乱码怎么办?
MaxCompute客户端工具是阿里云大数据计算服务MaxCompue产品官方客户端工具,通过客户端工具可以连接MaxCompute项目,完成包括数据管理.数据上下传.作业执行.用户及授权管理等各项操 ...
- Access查询中文乱码
现象:今天用Access数据库做一个简单的查询,查询中某一列内容为中文,直接用select语句查询没有问题,当把查询保存为视图的时候,打开视图中文列就乱码了. 解决过程:1.怀疑是编码问题,可是直接打 ...
- json数据条件查询,json数据sql查询中文乱码
json 解析 分页 条件查询 从数据库中查询出来的json数据乱码可以使用 json_extract(json字段,'$') json字段 这个是json数据的条件查询 <sql id=& ...
最新文章
- C++ 面向对象(三)异常 :异常概念、异常的匹配规则、异常安全、异常体系
- mysql5.6修改默认目录_MySQL修改默认存储路径
- 我心中的ASP.NET Core 新核心对象WebHost(一)
- Android开发笔记(一百七十八)更安全的数据仓库DataStore
- 理解运算符优先级(简单易懂,建议收藏)
- js选择html元素,JavaScript中获取HTML元素值的三种方法
- 并发编程常见面试题总结三
- APP开发策划方案怎么写?
- 数据结构课程设计——学生成绩查询与分析系统(简单详细版,含讲解)
- 数据挖掘之模糊集与模糊逻辑
- FPN网络详解——feature pyramid network
- 如何修改图像尺寸?教你两招轻松修改图像宽高像素
- petalinux 设备树驱动GPIOLED
- 曾经跨过山和大海的百度AI技术汇,跨进北工大!
- 钟平逻辑英语语法_关于钟平的逻辑英语
- php 获取ascii码,PHP实现ASCII码与字符串相互转换的方法
- iOS地图定位导航与大头针的简单使用
- android怎么监听当前应用被卸载
- 如何使用新一代轻量级分布式日志管理神器 Graylog 来收集日志
- 删除无法删除的文件/文件夹
热门文章
- 我总有办法让你今晚回不了家...
- 总监调岗至前台,企业被判赔偿26万,法院:“侮辱性调岗”违法
- 万物互联的千亿级通信云市场,开发者机会在哪里
- vmware 上部署 kvm虚拟机
- 后端常用开源组件合集(持续更新中)
- Jsp/Servlet:实现文件上传与下载
- URL/URI/URN的认识
- 阿里巴巴、腾讯与亚马逊相比,究竟差在哪儿?
- 用Spring Web Flow和Terracotta搭建Web应用
- 未能找出类型或命名空间名称“T” 问题的解决方案