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
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下運行結果如下:成功!
【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
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!"; ?> |
如果出現如下提示:
可能你還需要安裝 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的幾種情況詳解,希望對大家有所幫助