php连接微软MSSQL(sql server)完全攻略


Posted in PHP onNovember 27, 2016

在研究ezSQL的时候就看到了mssql_connect()等一些php提供的连接MSSQL的函数,本以为php这个开源的风靡世界的编程语言对连接微软的数据应该是不在话下的,但是到真正执行的时候,才发现困难多多。

一开始我下载的php版本是5.93的,下载下来添加环境变量等等搞了半天后,phpinfo()这个函数终于成功的运行在浏览器中了。然后当我在满世界的找php_mssql.dll,才发现在5.3以及以上版本的php中已经不是原生态的支持mssql了。

好不容易找到了微软Microsoft Drivers 3.0 for PHP for SQL Server,心想微软的东西应该做的可以,却无奈的发现SQLSRV30.EXE没有办法运行:“SQLSRV30.EXE 不是有效的win32程序”。

在网上搜索了半天,总结了以下一些可行的办法,但是在这之前你需要:

配置MICROSOFT SQL SERVER

1、下载并安装sql server。现在这个版本就比较多了从2000 到2008不等,找一个你自己下载吧。

2、开放tcp/ip连接方式,使得数据库能够远程访问。SQL Server Configuration Manager -> Network Configuration -> Protocols -> TCP/IP enabled

3、打开数据管理界面,添加用户和数据库。

4、安装php和配置IIS服务。

5、打开php所在文件夹里面的 php.ini文件,并添加:

mssql.textlimit = 20971520
mssql.textsize = 20971520

做完了这些之后,你可以按照下面三种方法来连接数据库了:

使用php自带的方法连接MSSQL(5.3及以后版本不适用)

确保php ext扩展库文件夹下有php_mssql.dll,然后在PHP.ini中的配置中,将

;extension=php_mssql.dll

前面的“;”去掉。

然后你可以测试连接了:

//连接MSSQL
$conn=mssql_connect("实例名或者服务器IP","用户名","密码");

//测试连接
if($conn)
{
 echo "连接成功";
}

Microsoft Drivers for SQL Server for PHP

2008年7月微软发布了一个新的为php连接SQL Server的驱动,它改善了php自带的连接MSSQL函数的一些缺点,并且是以php扩展插件的形式开发的,通过它你可以用php轻松的读写微软的数据库了。

如果你服务器使用的是IIS的话,那么就一定要从这里去下载:

http://php.iis.net/

因为从上述链接进去其实是微软整合的网络开发平台,只提供在线安装,但是很方便的整合了PDO插件和php,当然还有微软的其它一些开发功能,但是如果你没需要,你可以不装了,那些是在visual studio中的。

但是如果你用的是 Apache的话,你可以去这里直接下载这个插件了,它其实是一个解压文件,解压出来几个DLL文件,具体操作如下:

1)下载驱动包:http://www.microsoft.com/en-us/download/details.aspx?id=20098.

2)将DLL文件解压到 PHP extension_dir 目录,如果出现说SQLSRV30.EXE 不是有效的win32程序,可能是缺少某些库,可能是vc10,也有可能是没有用administrator权限运行。

extension_dir = “C:\PHP\ext”

php连接微软MSSQL(sql server)完全攻略

3)在php.ini配置文件内引用相应的动态链接库文件

extension=php_sqlsrv_52_ts_vc6.dll
extension=php_pdo_sqlsrv_52_ts_vc6.dll
extension=php_pdo.dll

其中的52、53表示就是php的5.2.x和5.3.x 版本,选择跟你php版本相匹配的;
选择vc6或vc9的主要看你使用的是什么web服务器软件,如果使用的是IIS那就选择vc9的,如果是Apache则选择vc6的。
至于ts和nts,就要看你安装的php版本是线程安全版的还是非线程安全版,ts是线程安全,nts是非线程安全。

4)重启Apache
5)连接数据库

测试连接代码:

<?php
//本地测试的服务名
"(local)";
//使用sql server身份验证,参数使用数组的形式,一次是用户名,密码,数据库名
//如果你使用的是windows身份验证,那么可以去掉用户名和密码
$connectionInfo = array( "UID"=>"root",
    "PWD"=>"root2010",
    "Database"=>"master");

$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn )
{
 echo "Connection established.\n";
}
else
{
 echo "Connection could not be established.\n";
 die( print_r( sqlsrv_errors(), true));
}
 ?>

在windows下使用FreeTDS

什么是FreeTDS? FreeTDS其实就是一个开源(或者可以说成自由)的C程序库,它可以实现在Linux系统下访问操作微软的SQL数据库。可以用在Sybase的db-lib或者ct-lib库,在里面也包含了一个ODBC的库。允许许多应用软件连接到Sybase或者微软的SQL服务器。FreeTDS是以源码的现实发布的,正因为是这样,所以它几乎可以在任何系统中进行编译安装。

如如你的服务器是Windows系统, 那么你应该使用 php_dblib.dll。(more information on Using FreeTDS for Unix.)

通常我们可以在这个网站上找到这些DLL文件- Frank Kromann's site, 但是它基本上很多都已经过时了,并且会引发很多的问题,因此我们推荐windows下使用PHP 5.2.x版本,并且看看下面的建议 :

1. 按照下面的表格来下载 php_dblib.dll 并且将其保存到 /PHP/ext 文件夹下面.


PHP version Thread Safe FreeTDS version Download URL
PHP 5.2.x (vc6) Yes 0.82 + 20090302 patches Download!
No 0.82 + 20090302 patches Download!
PHP 5.3.x (vc9) Yes 0.82 + 20090904 patches Download!
No 0.82 + 20090904 patches Download!
PHP 5.4.x (vc9) Yes 0.82 + 20110906 patches Download! FTP Download!
No 0.82 + 20110906 patches Download! FTP Download!

2、 FreeTDS 需要安装 .NET Framework v1.1 ,你可以到微软的网站去下载。或者你去Frank's site 下载需要的DLL文件,并保存到你的/PHP根目录下面。

3、在php配置文件 /PHP/php.ini 中添加:

extension=php_dblib.dll

4、当php引擎启动FreeTDS模块的时候需要传递一些信息,使得FreeTDS能够连接到它的默认的数据库。因此它的需要在freetds.conf中定义数据库连接的基本信息,该文件在其根目录下,可以按照你的情况来进行修改:

[global]
host = xxx.xxx.xxx.xxx (host name or ip of the MSSQL server)
port = 1433
client charset = UTF-8
tds version = 8.0
text size = 20971520
5、创建config.php文档来定义数据库连接参数:

$CFG->dbtype = 'mssql'; // Required
$CFG->dbhost = 'localhost'; // assuming MS SQL is on the same server, otherwise use an IP
$CFG->dbname = 'moodle';  // or whatever you called the database you created
$CFG->dbuser = 'yourusername'; // I usually use the 'sa' account (dbowner perms are enough)
$CFG->dbpass = 'yourpassword';
$CFG->dbpersist = false;
$CFG->prefix = 'mdl_';  //Prefix, you can change it, but NEVER leave it blank.

6、 重启你的网站,如果还是没有连接到你的数据库的话,在 /PHP/php.ini文件中将display_startup_errors改为"On",当你解决了这些问题之后再将错误报告改为“Off”;
7、测试你的网站,建立test.php文件,代码如下,访问http://localhost/test.php进行测试

<?php
	$link = mssql_connect('localhost', 'db_user', 'db_password');
	if(!$link) {
		echo'Could not connect';
		die('Could not connect: ' . mssql_error());
	}
	echo'Successful connection';
	mssql_close($link);
?>

好了windows下使用FreeTDS网上的资料一大堆就不再讲了,至此,此篇日志结束。

PHP 相关文章推荐
php递归获取目录内文件(包含子目录)封装类分享
Dec 25 PHP
php魔术变量用法实例详解
Nov 13 PHP
PHP中数据类型转换的三种方式
Apr 02 PHP
PHP永久登录、记住我功能实现方法和安全做法
Apr 27 PHP
PHP实现在线阅读PDF文件的方法
Jun 17 PHP
php实现对象克隆的方法
Jun 20 PHP
PHP单例模式与工厂模式详解
Aug 29 PHP
基于Laravel实现的用户动态模块开发
Sep 21 PHP
PHP工厂模式、单例模式与注册树模式实例详解
Jun 03 PHP
阿里对象存储OSS在laravel框架中的使用方法
Oct 13 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
Oct 15 PHP
如何理解PHP核心特性命名空间
May 28 PHP
php源码之将图片转化为data/base64数据流实例详解
Nov 27 #PHP
PHP使用curl函数发送Post请求的注意事项
Nov 26 #PHP
laravel创建类似ThinPHP中functions.php的全局函数
Nov 26 #PHP
PHP数组相加操作及与array_merge的区别浅析
Nov 26 #PHP
PHP中call_user_func_array回调函数的用法示例
Nov 26 #PHP
PHP 匿名函数与注意事项详细介绍
Nov 26 #PHP
PHP实现的登录,注册及密码修改功能分析
Nov 25 #PHP
You might like
php的一个登录的类 [推荐]
2007/03/16 PHP
PHP函数spl_autoload_register()用法和__autoload()介绍
2012/02/04 PHP
php获取从html表单传递数组的方法
2015/03/20 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
2016/10/08 PHP
jquery 简单图片导航插件jquery.imgNav.js
2010/03/17 Javascript
关于Mozilla浏览器不支持innerText的解决办法
2011/01/01 Javascript
jQuery客户端分页实例代码
2013/11/18 Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
2015/10/29 Javascript
js实现兼容IE、Firefox的图片缩放代码
2015/12/08 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
2016/01/17 Javascript
jQuery实现图片轮播效果代码
2016/09/27 Javascript
ionic中列表项增加和删除的实现方法
2017/01/22 Javascript
JS关于刷新页面的相关总结
2018/05/09 Javascript
微信二次分享报错invalid signature问题及解决方法
2019/04/01 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
Python中处理字符串的相关的len()方法的使用简介
2015/05/19 Python
python实现的系统实用log类实例
2015/06/30 Python
安装Python的教程-Windows
2017/07/22 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
2017/09/08 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
python查看模块安装位置的方法
2018/10/16 Python
python快排算法详解
2019/03/04 Python
numpy concatenate数组拼接方法示例介绍
2019/05/27 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
2020/03/19 Python
Django中ORM的基本使用教程
2020/12/22 Python
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
Fossil德国官网:化石手表、手袋、珠宝及配件
2019/12/07 全球购物
电影T恤、80年代T恤和80年代服装:TV Store Online
2020/01/05 全球购物
消防器材管理制度
2014/01/28 职场文书
局机关干部群众路线个人对照检查材料思想汇报
2014/10/05 职场文书
工厂见习报告范文
2014/10/31 职场文书
中秋节慰问信
2015/02/15 职场文书
售房协议书范本
2015/08/11 职场文书
Windows环境下实现批量执行Sql文件
2021/10/05 SQL Server