zoukankan      html  css  js  c++  java
  • PHP 5.6.11 访问SQL Server2008R2

    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能看到相关的支持模块内容:

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

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

    写一个测试的小例程:

     1 <?php
     2 $server ="127.0.0.1sql2000";  //服务器IP地址,如果是本地,可以写成localhost
     3 $uid ="sa";  //用户名
     4 $pwd ="yoooko"; //密码
     5 $database ="master";  //数据库名称
     6  
     7 //进行数据库连接
     8 $conn =mssql_connect($server,$uid,$pwd) or die ("connect failed");
     9 mssql_select_db($database,$conn);
    10  
    11 //执行查询语句
    12 $query ="select * from cs";
    13 $row =mssql_query($query);
    14  
    15 //打印输出查询结果
    16 while($list=mssql_fetch_array($row))
    17 {
    18        print_r($list);
    19        echo "<br>";
    20 }
    21 ?>

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

    【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

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

    php_sqlsrv_56_ts.dll
    php_pdo_sqlsrv_56_ts.dll

    这两个文件,复制到phpext目录下,

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

    extension=C:PHP5extphp_sqlsrv_56_ts.dll
    extension=C:PHP5extphp_pdo_sqlsrv_56_ts.dll

    3. 重启IIS或者Apache,

    4. 通过phpinfo能够看到如下模块显示,我们的PHP应该此时就能访问SQL Server 2008R2了;

     

     

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

     1 <?php
     2 try {   
     3         $dbName = "sqlsrv:Server=127.0.0.1sql2008r2;Database=master";   
     4         $dbUser = "sa";   
     5         $dbPassword = "yoooko";   
     6         $db = new PDO($dbName, $dbUser, $dbPassword);       
     7         if ($db)   
     8         {       
     9             echo "database connect succeed.<br />";   
    10         }
    11     }
    12     
    13     catch (PDOException $e)
    14     {   
    15        $content = iconv("UTF-8","gbk",$e->getMessage());    
    16        echo   $content . "<br />";
    17     }
    18        
    19         //echo "Hello PDO to MS SqlSrv!";
    20     
    21 ?>

    如果出现如下提示:

    可能你还需要安装 Microsoft® ODBC Driver 11 for SQL Server® - Windows

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

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

     PS.由于新的模块是通过PDO方式访问SQL Server 2008R2,如果是本机访问,那么直接通过ip地址和sa账号就能访问了,

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

    sqlsrv:Server=192.168.1.xxxsql2008r2,14333;Database=master



     
     
  • 相关阅读:
    Project和Module的介绍
    2016-10-27~2016-11-12面试总结
    读写分离的概念(转)
    hashmap和hashtable,arraylist和vector的区别
    如何删除数据库表的重复数据
    Iterator和ListIterator的区别
    性能提升
    Oracle 查询并修改
    oracle数据库中VARCHAR2(50 CHAR) 和VARCHAR2(50) 有啥区别?
    SQL SERVER 2000安装教程图文详解
  • 原文地址:https://www.cnblogs.com/skysowe/p/5749022.html
Copyright © 2011-2022 走看看