PHP 5.6.11 访问SQL Server2008R2的几种情况详解

2025-05-29 0 101

php天生支持mysql,但是有时候也想让它访问sql server,该怎么办呢?

最近找了点资料,测试成功了php访问sqlsvr的几种情况,限于时间,还没有测试更多不同环境,把测试过的记录如下:

测试环境:win7 x64 sp1,iis 7.5, apache 2.4 32位版本,php 5.2.6 win32, php 5.6.11 win32 ts(线程安全版)

注:由于“microsoft drivers for php for sql server”驱动程序目前只有32位版,所以如果是使用sql server数据库的朋友,不建议使用php 64位,否则会导致无法连接 sql server 数据库的问题!

php 5.2.6在iis上成功访问了sql2000

php 5.2.6在iis上成功访问了sql2008r2

php 5.6.11在apache上成功访问了sql2008r2

【5.2.6 -> sql2000】

为什么要用5.2.6这么旧的php版本做测试呢,因为php 5.2版本,内置了php_mssql.dll 模块,

打开了php.ini中的extension=php_mssql.dll 配置选项,默认好像就支持mssql2000了,

打开phpinfo能看到相关的支持模块内容:

PHP 5.6.11 访问SQL Server2008R2的几种情况详解

ps.iis 7.0下安装php现在方便了,可以通过一个第三方小工具 php manager来安装,也可以方便的切换iis下的php版本,这不是本文的主要内容,这里就不介绍了;

php manager for iis 7 下载安装地址:http://phpmanager.codeplex.com/

PHP 5.6.11 访问SQL Server2008R2的几种情况详解

PHP 5.6.11 访问SQL Server2008R2的几种情况详解

写一个测试的小例程:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18
<?php

$server ="127.0.0.1\\sql2000"; //服务器ip地址,如果是本地,可以写成localhost

$uid ="sa"; //用户名

$pwd ="yoooko"; //密码

$database ="master"; //数据库名称

//进行数据库连接

$conn =mssql_connect($server,$uid,$pwd) or die ("connect failed");

mssql_select_db($database,$conn);

//执行查询语句

$query ="select * from cs";

$row =mssql_query($query);

//打印输出查询结果

while($list=mssql_fetch_array($row))

{

print_r($list);

echo "<br>";

}

?>

在iis 7.5下运行结果如下:成功!

PHP 5.6.11 访问SQL Server2008R2的几种情况详解

【5.6.11 -> sql2008r2】

5.6以上的php已经没有php_mssql.dll,貌似也不再原生支持sql2000以上版本的sql server了,要通过第三方模块,在微软官网找到了:

microsoft drivers for php for sql server

http://www.microsoft.com/en-us/download/details.aspx?id=20098

下载链接地址有四个文件:

•sqlsrv30.exe
•sqlsrv31.exe
•sqlsrv32.exe
•sqlsrv40.exe

分别支持不同的php版本

•version 4.0 supports php 7.0+
•version 3.2 supports php 5.6, 5.5, and 5.4
•version 3.1 supports php 5.5 and 5.4
•version 3.0 supports php 5.4.

如果是php 5.2要下载一个sqlsrv20.exe,这个文件目前在网上也能很容易的找到;

(虽然5.2这么旧的版本早就该被淘汰了,但是考虑到某些环境还需要用它)

php_pdo_sqlsrv_52_ts_vc6.dll

php_sqlsrv_52_ts_vc6.dll

PHP 5.6.11 访问SQL Server2008R2的几种情况详解

1. 我手里是php 5.6.11 win32 ts,要用到这个

php_sqlsrv_56_ts.dll
php_pdo_sqlsrv_56_ts.dll

这两个文件,复制到php\\ext目录下,

2. php.ini 里加上以下两句:

extension=c:\\php5\\ext\\php_sqlsrv_56_ts.dll
extension=c:\\php5\\ext\\php_pdo_sqlsrv_56_ts.dll

3. 重启iis或者apache,

4. 通过phpinfo能够看到如下模块显示,我们的php应该此时就能访问sql server 2008r2了;

PHP 5.6.11 访问SQL Server2008R2的几种情况详解

PHP 5.6.11 访问SQL Server2008R2的几种情况详解

5、写一个小程序验证一下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18
<?php

try {

$dbname = "sqlsrv:server=127.0.0.1\\sql2008r2;database=master";

$dbuser = "sa";

$dbpassword = "yoooko";

$db = new pdo($dbname, $dbuser, $dbpassword);

if ($db)

{

echo "database connect succeed.<br />";

}

}

catch (pdoexception $e)

{

$content = iconv("utf-8","gbk",$e->getmessage());

echo $content . "<br />";

}

//echo "hello pdo to ms sqlsrv!";

?>

如果出现如下提示:

PHP 5.6.11 访问SQL Server2008R2的几种情况详解

可能你还需要安装 microsoft® odbc driver 11 for sql server® – windows

下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=36434

PHP 5.6.11 访问SQL Server2008R2的几种情况详解

如果正确的话,应该就ok了:

ps.由于新的模块是通过pdo方式访问sql server 2008r2,如果是本机访问,那么直接通过ip地址和sa账号就能访问了,

如果php和sql2008r2在不同电脑上,还得设置tcp 端口1433来访问,见下面第二张图,把动态端口改为0,把端口设置为14333如果你的sql2000已经占用了1433,访问地址后面加个,xxxx端口号

sqlsrv:server=192.168.1.xxx\\sql2008r2,14333;database=master

PHP 5.6.11 访问SQL Server2008R2的几种情况详解

PHP 5.6.11 访问SQL Server2008R2的几种情况详解

以上所述是小编给大家介绍的php 5.6.11 访问sql server2008r2的几种情况详解,希望对大家有所帮助

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 PHP 5.6.11 访问SQL Server2008R2的几种情况详解 https://www.kuaiidc.com/96874.html

相关文章

发表评论
暂无评论