PHP连接sqlserver的相关知识

PHP连接sqlserver的相关知识

本文档整理了php连接sql server数据库的服务器配置方法,实际测试用的是wamp服务器,web服务器是apache,php版本是php5.4,成功连接到server 2012。

php连接sql server过程中用到微软的SQL Server Driver for PHP程序,本程序支持apahce,IIS。我用的是apache服务器,如果你的应用服务器是IIS的,只要选择相应的IIS驱动程序就可 以,配置方法类似,具体的可查看SQL Server Driver for PHP文件夹内的SQLSRV_Help.chm文件。

从sql server2005开始,已经不能通过配置php.ini里面的php_mssql.dll扩展实现连接sqlserver。php_mssql.dll最高支持到sql server2000版本数据库连接(php中当然还是有这个扩展库的因此要禁用)。

sql server 2005及以上版本的php连接要用到SQL Server Driver for PHP。这个扩展软件由微软提供。以下介绍两个SQL Server Driver for PHP的版本:

SQL Server Driver for PHP 2.0版本:(sqlserver20.exe)
支持数据库版本:sql server 2005 ,sql server 2008
支持php版本:  php 5.2 ,php 5.3
支持服务器软件: IIS ,apache

SQL Server Driver for PHP 3.0版本:(sqlserver30.exe)
支持数据库版本sql server2005,sqlserver 2008,sql server       2012
支持php版本: php 5.3,php5.4
支持服务器软件: IIS ,apache

PHP连接sqlserver数据库的测试,配置实测总结如下:

我的是wampserver2.2e-php5.4.3-httpd2.2.22-mysql5.5.24-32b,使用SQL Server Driver for PHP 3.0版本,可以通过php正常连接到sqlserver 2012。使用SQL Server Driver for PHP 2.0版本,可以通过php5.2正常连接到sql server 2005与sql server 2008。对于使用sql server 2005的,推荐使用这版本配置。

实测版本的详细配置如下:

wampserver2.2e-php5.4.3-httpd2.2.22-mysql5.5.24-32b

1.直接安装wamp.exe(php是5.4以上版本)就可以了。
2.把SQL Server Driver for PHP 3.0解压到E:\wamp\bin\php\php5.4.3\ext目录。
3.如果是sql server 2005的话,直接下一步就可以;如果是sql server 2008或以上版本还要安装一个微软的工具包sqlncli.msi,直接点击安装。
4.修改php.ini配置文件,在文件中增加下面的内容
extension=php_sqlsrv_54_ts_vc6.dll(ts:ThreadSafe)
extension=php_pdo_sqlsrv_54_ts_vc6.dll
extension=php_pdo.dll
5.重启动wamp服务器,查看phpinfo信息。如果看到以下内容则恭喜你相关扩展库安装成功了!

 
6.然后写一个php连接sqlserver数据库的测试代码,如下图:

<?php

header(“content-type:text/html; charset=utf-8″);

$serverName = “(local)”;
$uid = “用户名”;
$pwd = “密码”;

$connectionInfo = array(“UID”=>$uid,”PWD”=>$pwd,”Database”=>”test”);

$conn = sqlsrv_connect( $serverName,$connectionInfo);
if( $conn == false)
{
echo “连接失败!”;
die( print_r( sqlsrv_errors(), true));
}

$query = sqlsrv_query($conn, “select top 8 id,title,content from test.dbo.test”);

while($row = sqlsrv_fetch_array($query)){
echo $row['id'].”######”.iconv(‘GB2312′,’UTF-8′,$row['title']).”######”.iconv(‘GB2312′,’UTF-8′,$row['content']).”<br/>”;
}

?>

7.用浏览器去访问与sqlserver2014相关的php文件,正常的话就可以看到结果。

补充相关知识点(网上截取,只供参考):

环境:
- Apache 2.2.6
- PHP 5.2.5
- SQL Server 2005
- Windows XP SP2
步骤:
1. 首先按通常做法配置好PHP5连接MS SQL Server
2. 下载正确版本的 ntwdblib.dll (2000.80.194.0),地址: http://www.webzila.com/dll/1/ntwdblib.zip
3. 覆盖 apache2.2.6\bin\ntwdblib.dll
4. 覆盖 php5.2.5\ntwdblib.dll
5. 运行 SQL Server 配置管理器:SQL Server Configuration Manager,打开协议 Protocols
6. 允许命名管道 "named pipes" 和 "tcp/ip"
7. 右键点击 "tcp/ip",打开属性 Properties 标签 "IP addresses"
8. 在 TCP 动态端口 "TCP Dynamic Ports" 填入 1433
9. 重启 SQL Server、Apache和PHP
使用以下方式连接MS SQL Server 2005:
mssql_connect('localhost,1433', USERNAME, PASSWORD);

配置php
1、将php.ini中的extension=php_mssql.dll的注释符号去掉。
2、将php.ini将mssql.secure_connection = Off改为on。
3、将php_pdo_sqlsrv_54_nts.dll、php_sqlsrv_54_nts.dll

或php_pdo_sqlsrv_54_ts.dll、php_sqlsrv_54_nts.dll

(有ns表示是NotThreadSafe非线程)添加到E:\wamp\bin\php\php5.4.3\ext文件夹下
注意:实际使用中发现如果通过php压缩文件手工安装php到iis下,必须重启机器而不仅仅是iis。
4、需要保证php或者系统system32下有ntwdblib.dll,查看属性确保其版本为8.00.194而不是7.0;

其他设置
如果php apache Sql Server2000都在同一台机器上,访问基本没有问题了。
如果Sql Server2000和php机器是分离的,需要确认ping sqlserver所在机器的机器名能通,如过不通,修改php所在机器的\system32\drivers\etc下的hosts文件,增加一行 sqlserver所在机器的机器ip sqlserver所在机器的机器名字。
如果还是无法访问,需要确认php所在的机器有无暗转mdac。要不索性安装一下sqlserver的客户端好了。

配置sqlserver
a. 运行 SQL Server 配置管理器:SQL Server Configuration Manager,打开协议 Protocols
b. 允许命名管道 "named pipes" 和 "tcp/ip"
c. 右键点击 "tcp/ip",打开属性 Properties 标签 "IP addresses"
d. 在 TCP 动态端口 "TCP Dynamic Ports" 填入 1433
e. 重启 SQL Server

FAQ常见问题:
1报错:
Fatal error: Call to undefined function mssql_connect()
解决:
使用MSSQL_系列函数
要使用这两种都需要在php.ini进行设定:
(1)允许 DCOM,需要将php.ini中的 ;com.allow_dcom=TRUE前的分号";"去掉。
(2)使用MSSQL扩展,需要php.ini中的 ;extension=php_mssql.dll前的分号";"去掉。(关键)
(3)确认extension_dir为正确路径,以本机为例:extension_dir = "c:\AppServ5.2.6\php\ext"。
(4)如果仍然机器报错说找不到c:\AppServ5.2.6\php\ext\php_mssql.dll但明明存在这个文件。
解决方法:将php_mssql.dll,ntwdblib.dll拷贝到系统目录\system32下重启测试。。
(注:上面两个dll文件不在相同目录下,我的为c:\AppServ5.2.6\php\ext\php_mssql.dll;c:\AppServ5.2.6\php\ntwdblib.dll)
另外设置好了后记得重启服务器哦。

2.mssql_connect() Unable to connect to server
确认SQLServer2005服务器正常.检查 TCP/IP已经启用
同时右键查看属性:
已经启用是否选择是
确认服务器正确之后,再确认ntwdblib.dll 文件位置是否放到了 c:\windows\system32下
同时要保证ntwdblib.dll 这个文件的版本和sqlserver的版本对应:
下面是对应关系:
2.ntwdblib.dll 版本为 2000.2.8.0 是 对应 SqlServer2000(这个是网络查资料和猜测,没装2000)
2.ntwdblib.dll 版本为 2000.80.194.0 是 对应 SqlServer2005(这个是用实验证明可以用,本人就是用笔记本装了2005)
3.ntwdblib.dll 版本为 2000.80.2039 是 对应 SqlServer2008(这个是猜测没有装2008)
6.其他问题:
如果php apache Sql Server2000都在同一台机器上,访问基本没有问题了。
如果Sql Server2000和php机器是分离的,需要确认ping sqlserver所在机器的机器名能通,如过不通,修改php所在机器的\system32\drivers\etc下的hosts文件,增加一行 sqlserver所在机器的机器ip sqlserver所在机器的机器名字。
如果还是无法访问,需要确认php所在的机器有无暗转mdac。要不索性安装一下sqlserver的客户端好了。


解决问题如下:
1.下载两个文件 php_mssql.dll 和 ntwdblib.dll
php_mssql.dll 如果这个没有复制到c:\windows\system32下,就很容易出现;
ntwdblib2093.dll 这个文件要注意版本,不然后面搞得很郁闷.
如果你的MSSQL数据库是2000的,基本上操作都是一样的。
新增一台win2003 server系统的服务器。以前其他的服务器上使用php5.0/5.1,数据库是SQL Server 2000;本次则打算安装SQL Server 2005,php5.3.2;据了解,php5.3版本使用微软的FastCGI模式,这种模式和传统的CGI模式相比采用了更加合理的解析进程启动模 式,速度比CGI快2倍;在PHP5.3以上的版本已经对ISAPI模式不支持。


在已经安装iis6和ms sql server 2005后,整个安装过程是
1.安装FastCGI;
2.安装php5.3.2;
3.安装SQL Server Driver for PHP 1.1驱动;

一、在服务器上安装FastCGI
在服务器上打开下面网址运行Microsoft Web 平台安装程序:
http://www.microsoft.com/web/gallery/install.aspx?appsxml=&appid=PHP%3bPHP%3bPHP
勾选web服务器/自定义/应用程序开发/FastCGI1.0,下一步直至FastCGI安装完成;
有关FASTCGI的官方说明文档:
http://www.iis.net/articles/view.aspx/IIS7/Hosting-Web-Applications/PHP/Configuring-FastCGI-Extension-for-IIS6-0-and-IIS5-?Page=1

二、安装php5.3.2
下载网址:http://windows.php.net/downloads/releases/
我们下载这里目前所见的最新版本php-5.3.2-Win32-VC9-x86.msi 到服务器上,VC6用于apache,vc9用于win2003 server iis等;熟悉php的程序员可以下载zip版自行配置;
运行php-5.3.2-Win32-VC9-x86.msi,安装中出现对话框,选择安装目录C:\PHP,选择IIS FASTCGI;完成安装。
三、配置IIS支持PHP
1.FACTCGI安装后在c:\windows\system32\inetsrv下有五个文件,其中有用的是:fcgtext.dll,fcgitext.ini;打开FASTCGI配置文件fcgitext.ini,在最后[Types]修改为这样的样式:
[Types]
php=PHP
[PHP]
ExePath=c:\Php\php-cgi.exe
2.打开IIS管理器,网站上点右键-属性-主目录-配置-添加fcgiext.dll为可执行文件,配置如下图
经过上述步骤,已经完成了PHP5.3.2在iis6上的安装;如果下载的是zip版,则需对php.ini文件进行配置;
之后,在iis里默认文档添加php。

四、安装SQL Server Driver for PHP 1.1驱动
SQL Server Driver for PHP 1.1驱动支持SQL Server 2005和 SQL Server 2008,目前最新的下载地址是:
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=ccdf728b-1ea0-48a8-a84a-5052214caad9
系统环境:

1.安装文件名为SQLServerDriverForPHP11.EXE;
2.拷贝驱动php_sqlsrv_53_ts_vc9.dll到相应的位置PHP目录下ext文件夹内;
3.配置的时候若需要配置一个PHP的扩展,此扩展需要将相关的dll文件全部复制到PHP的扩展目录里面,然后通过修改php.ini来实现PHP的扩展,在php.ini里面需要指明扩展路径,一般情况是在最末尾添加一行,所以修改php.ini实现扩展:

在php.ini的一大堆;extension=**.dll格式里面添加一行添加的一行内容为:
extension=php_sqlsrv_53_ts_vc9.dll
保存php.ini后拷贝一份到windows目录下;
选择php_sqlsrv_53_ts_vc9.dll的原因在于,它是线程安全的驱动,如果服务器本身的环境是使用的php5ts.dll,对应的就用这个驱动;

posted on 2014-09-12 15:25  Ryanyanglibin  阅读(275)  评论(0)    收藏  举报

导航