PHP 5.6.11 訪問SQL Server2008R2

來源:互聯網
上載者:User

標籤:

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.1\sql2000";  //伺服器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

這兩個檔案,複製到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了;

 

 

 

5、寫一個小程式驗證一下:

 1 <?php 2 try {    3         $dbName = "sqlsrv:Server=127.0.0.1\sql2008r2;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.xxx\sql2008r2,14333;Database=master



 

 

 

 

 

PHP 5.6.11 訪問SQL Server2008R2

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.