因为项目以前的数据库为SQLServer(MSSql),客户希望不要换数据库。在当今客户就是上帝的理念下,于是只能采用Linux下PHP操作MSSql。由于之前没什么经验,甚至可以说是第一次。于是在网上找了很多Linux下PHP配置MSSql的资料,其中不得不说错误太多,自己做了很多实验,最终还是完美的解决PHP支持MSSql的问题。下面PHP程序员雷雪松就详细的看看Linux下如何配置PHP支持MSSql?

1、下载并安装freetds,freetds是一套为UNIX和Linux允许程序来跟微软SQL Server和Sybase数据库交互的动态库。

[root@PHP ~]# wget ftp://ftp.freetds.org/pub/freetds/current/freetds-current.tar.gz

[root@PHP ~]# tar -zxvf freetds-current.tar.gz

[root@PHP ~]# cd freetds-dev.0.99.633/

[root@PHP freetds-dev.0.99.633]# ./configure --prefix=/usr/local/freetds --with-tdsver=7.3--enable-msdblib --enable-dbmfix

[root@PHP freetds-dev.0.99.633]# make && make Install

[root@IM freetds-dev.0.99.633]# /usr/local/freetds/bin/tsql -H mssql数据库地址 -p 端口 -U 用户名-P 密码

locale is "en_US.UTF-8"

locale charset is "UTF-8"

using default charset "UTF-8"

1> use test; #选择数据库

2> go #提交才会执行

1> select * from user #查询user表

2> go #提交才会执行

1> quit

2、PHP有两种方式操作MSSql,一种通过PHP中MSSql扩展中的MSSql相关函数,一种是通过PHP中pdo_dblib扩展通过pdo的方式操作MSSql。下面分别讲解下安装PHP mssql扩展和pdo_dblib扩展以及各自的用法。

a、安装PHP mssql扩展。

[root@PHP ~]# cd /php-5.6.18/ext/mssql/

[root@IM mssql]# phpize

[root@IM mssql]# ./configure --with-php-config=/usr/local/bin/php-config --with-mssql=/usr/local/freetds

[root@IM mssql]# make && make install

[root@IM mssql]# vi php.ini

extension=mssql.so #注意mssql.so的路径

[root@IM mssql]# /usr/local/apache/bin/httpd -k restart #重启apache

[root@IM mssql]# php -m #查看已经安装的mssql扩展

这样MSSql扩展就安装完成了,就可以使用mssql相关函数操作MSSql数据库了。

$conn = mssql_connect("ip地址:端口", "用户名", "密码");

//测试连接

if ($conn) {

echo "连接成功";

}

b、安装pdo_dblib扩展

[root@PHP ~]# cd /usr/php-5.5.28/ext/pdo_dblib/

[root@IM pdo_dblib]# phpize

[root@IM pdo_dblib]# ./configure --with-php-config=/usr/local/bin/php-config --with-pdo-dblib=/usr/local/freetds/

[root@IM pdo_dblib]# make && make install

[root@IM pdo_dblib]# vi php.ini

extension=pdo_dblib.so #注意pdo_dblib.so的路径

[root@IM pdo_dblib]# /usr/local/apache/bin/httpd -k restart #重启apache

[root@IM pdo_dblib]# php -m #查看已经安装的pdo_dblib扩展

这时候就可以通过pdo的函数操作MSSql数据库了。

$dsn = 'dblib:host=ip地址:端口;dbname=$dbname';

$user = 'dbuser';

$password = 'dbpass';

try {

$dbh = new PDO($dsn, $user, $password);

} catch (PDOException $e) {

echo 'Connection failed: ' . $e->getMessage();

}

下面附上ThinkPHP3.2中操作MSSql的配置文件conf.php:

return array(

//'配置项'=>'配置值'

'DB_TYPE' => 'sqlsrv', // 数据库类型

'DB_USER' => '', // 用户名

'DB_PWD' => '', // 密码

'DB_PORT' =>'', // 端口

'DB_PREFIX' => '', // 数据库表前缀

'DB_DSN'=> 'dblib:host=IP地址:端口;dbname=数据库名称',

'DB_CHARSET' => 'utf8', // 字符集

);

在ThinkPHP3.2中如果支持MSSql,还得修改ThinkPHP驱动文件的连接参数,否则会报错’Undefined class constant ‘PDO::SQLSRV_ATTR_ENCODING’。具体的操作办法为:将ThinkPHPLibraryThinkDbDriverSqlsrv.class.php中第26行’PDO::SQLSRV_ATTR_ENCODING => PDO::SQLSRV_ENCODING_UTF8,’注释掉即可。ThinkPHP数据库操作MSSql时,如果原表名是USER,如果你写为M(‘USER’),那么ThinkPHP变为U_S_E_R。所以在ThinkPHP操作MSSql表明一定要小写。

原文来源:PHP程序员,雷雪松的个人博客--https://www.leixuesong.com/1920

php mssql及php mysql_Linux下PHP支持MSSql的配置相关推荐

  1. 在linux下让php支持mssql,WIN和LINUX下PHP连接mssql的方法

    WIN下比较简单: 1.安装sql服务器并添加PHP的MSsql扩展. 2.使用以下代码连接并测试 $myServer = "localhost"; //主机 $myUser = ...

  2. linux 指定库名 登录mysql_Linux下指定mysql数据库数据配置主主同步的实例

    一. 概念:① 数据库同步  (主从同步 --- 主数据库写的同时 往从服务器写数据) ② 数据库同步  (主主同步 --- 两台数据库服务器互相写数据) 二. 举例 主主数据库同步服务器配置 数据库 ...

  3. Linux下mysql支持中文,linux下mysql环境支持中文配置步骤

    sql脚本执行前加上: CREATE DATABASE IF NOT EXISTS mydatabase DEFAULT CHARSET utf8 COLLATE UTF8_GENERAL_CI; u ...

  4. 解决IE6下不支持 png24的透明图片问题

    解决IE6下不支持 png24的透明图片问题 参考文章: (1)解决IE6下不支持 png24的透明图片问题 (2)https://www.cnblogs.com/heimanba/p/3826771 ...

  5. php apache 配置文件,Linux下apache支持PHP配置文件的方法

    本文用来记忆整了两天的lamp环境,如果对PHP没有要求建议全部用yum 一键安装,纯属个人经验,主要作用是用来参考的. yum install httpd #yum 安装Apache. php编译安 ...

  6. HTML字体小于12谷歌不兼容,Chrome谷歌浏览器下不支持css字体小于12px的解决办法...

    coder.png 在这一年的工作中,我发现很多问题你利用自己的「聪明才智」绕过去了,总有一天它会和你不期而遇,今天我们就来直面一个字体兼容性的小问题:Chrome谷歌浏览器下不支持css字体小于12 ...

  7. matlab启动不了jvm,MATLAB ::在-nojvm启动选项下不再支持此功能

    我正在终端中运行Matlab代码,因为稍后我需要在php中调用此代码.但是我得到这些错误:MATLAB ::在-nojvm启动选项下不再支持此功能 [email protected]:~/Deskto ...

  8. thinkphp在nginx下pathinfo支持

    thinkphp在nginx下pathinfo支持 在apache下运行正常,但是在nginx下内页都是404空白. 解决办法: 首先:修改nginx的rewrite location / {if ( ...

  9. 1px dotted 在IE6下不支持

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

最新文章

  1. php 生成器 教程,PHP扩展生成器_PHP教程
  2. 马斯克SpaceX内部信曝光:戒骄戒躁,我们的首要任务是星际飞船
  3. JavaScrip入门-浏览器里的js
  4. maven 使用 问题记录
  5. renderer的两种使用方式
  6. C#中的 隐式与显式接口实现
  7. android 如何使用SAX解析XML
  8. python recv_Python socket.recv方法代码示例
  9. JavaSE——类集(下)(Set、Comparable、Collections、Comparator、Map)
  10. php pdo $_GET,PHP PDOStatement::getColumnMeta讲解
  11. 【先定一个小目标】Asp.net Core 在IIS上的托管运行
  12. pyspark连接MySQL数据库,执行SQL语句,返回数据查询结果
  13. 前端每日实战:76# 视频演示如何用纯 CSS 创作一组单元素办公用品(内含2个视频)...
  14. NLPIR的语义分析系统
  15. Bootstrap---dateTimePicker时间控件配置与应用
  16. 工商银行发消息说5星级服务器,工商银行5星级客户多吗?会刷星你也可以..
  17. RBM(受限玻尔兹曼机)和深层信念网络(Deep Brief Network)
  18. Lesson 20 One man in a boat 独坐孤舟
  19. 工业加固三防平板主要适用于哪些环境
  20. 虚拟机启动时,提示找不到ISO映像文件

热门文章

  1. ansible 基本操作(初试)
  2. mysql入门很简单(一)
  3. 安装Node和NPM
  4. swift属性观察者机智
  5. javax.servlet.http.HttpServlet was not found
  6. Sql Server 列转行 Pivot使用
  7. Do 32-bit build only with XCode 5.1
  8. EncodingAESKey
  9. 解决UnicodeDecodeError: 'ascii' codec can't decod...
  10. Linq To Sql, 为何继承就这么费劲?