您的位置:首页 > 编程语言 > PHP开发

php连接微软MSSQL完全攻略

2013-03-28 18:38 435 查看
来自:http://www.chaochaoblog.com/archives/1715

----------------------------------------------------------------

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

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

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

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

配置MICROSOFTSQLSERVER

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

2、开放tcp/ip连接方式,使得数据库能够远程访问。SQLServerConfigurationManager->NetworkConfiguration->Protocols->TCP/IPenabled

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

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

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

mssql.textlimit=20971520

mssql.textsize=20971520

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

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

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

;extension=php_mssql.dll

前面的“;”去掉。

然后你可以测试连接了:

1
//连接MSSQL
2
$conn
=mssql_connect(
"实例名或者服务器IP"
,
"用户名"
,
"密码"
);
3
4
//测试连接
5
if
(
$conn
)
6
{
7
echo
"连接成功"
;
8
}
MicrosoftDriversforSQLServerforPHP

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

如果你服务器使用的是IIS的话,那么就一定要从这里去下载:
http://php.iis.net/
因为从上述链接进去其实是微软整合的网络开发平台,只提供在线安装,但是很方便的整合了PDO插件和php,当然还有微软的其它一些开发功能,但是如果你没需要,你可以不装了,那些是在visualstudio中的。

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

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

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

extension_dir=“C:\PHP\ext”





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)连接数据库

测试连接代码:

1
<?php
2
//本地测试的服务名
3
"(local)"
;
4
//使用sqlserver身份验证,参数使用数组的形式,一次是用户名,密码,数据库名
5
//如果你使用的是windows身份验证,那么可以去掉用户名和密码
6
$connectionInfo
=
array
(
"UID"
=>
"root"
,
7
"PWD"
=>
"root2010"
,
8
"Database"
=>
"master"
);
9
10
$conn
=sqlsrv_connect(
$serverName
,
$connectionInfo
);
11
12
if
(
$conn
)
13
{
14
echo
"Connectionestablished.\n"
;
15
}
16
else
17
{
18
echo
"Connectioncouldnotbeestablished.\n"
;
19
die
(print_r(sqlsrv_errors(),true));
20
}
21
?>
在windows下使用FreeTDS

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

如如你的服务器是Windows系统,那么你应该使用php_dblib.dll。(moreinformationonUsingFreeTDSforUnix.)

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

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

PHPversionThreadSafeFreeTDSversionDownloadURL
PHP5.2.x(vc6)Yes0.82+20090302patchesDownload!
No0.82+20090302patchesDownload!
PHP5.3.x(vc9)Yes0.82+20090904patchesDownload!
No0.82+20090904patchesDownload!
PHP5.4.x(vc9)Yes0.82+20110906patchesDownload!FTPDownload!
No0.82+20110906patchesDownload!FTPDownload!
2、FreeTDS需要安装.NETFrameworkv1.1,你可以到微软的网站去下载。或者你去Frank’ssite下载需要的DLL文件,并保存到你的/PHP根目录下面。

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

extension=php_dblib.dll

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

1
[global]
2
host=xxx.xxx.xxx.xxx(hostnameoripoftheMSSQLserver)
3
port=1433
4
clientcharset=UTF-8
5
tdsversion=8.0
6
textsize=20971520
5、创建config.php文档来定义数据库连接参数:

1
$CFG
->dbtype=
'mssql'
;
//Required
2
$CFG
->dbhost=
'localhost'
;
//assumingMSSQLisonthesameserver,otherwiseuseanIP
3
$CFG
->dbname=
'moodle'
;
//orwhateveryoucalledthedatabaseyoucreated
4
$CFG
->dbuser=
'yourusername'
;
//Iusuallyusethe'sa'account(dbownerpermsareenough)
5
$CFG
->dbpass=
'yourpassword'
;
6
$CFG
->dbpersist=false;
7
$CFG
->prefix=
'mdl_'
;
//Prefix,youcanchangeit,butNEVERleaveitblank.
6、重启你的网站,如果还是没有连接到你的数据库的话,在/PHP/php.ini文件中将display_startup_errors改为"On",当你解决了这些问题之后再将错误报告改为“Off”;

7、测试你的网站,建立test.php文件,代码如下,访问http://localhost/test.php进行测试

1
<?php
2
$link
=mssql_connect(
'localhost'
,
'db_user'
,
'db_password'
);
3
if
(!
$link
){
4
echo
'Couldnotconnect'
;
5
die
(
'Couldnotconnect:'
.mssql_error());
6
}
7
echo
'Successfulconnection'
;
8
mssql_close(
$link
);
9
?>
好了windows下使用FreeTDS网上的资料一大堆就不再讲了,至此,此篇日志结束。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: