php連接sql server


這兩天有個php連接sql server的項目,順便學習學習sql server 
說明:
 1:PHP5.2.x本身有個php_mssql.dll的擴展用來連接Sql server,但是這個dll只是用來連接低版本 Sql server的(2000以下版本),在Sql server 2005及以上版本無法使用mssql_connect連接到數據庫。
 2:php5.3.x不再支持php_mssql.dll 拓展庫了,及時使用php5.2.x中的php_mssql.dll也無法使用。 微軟專門為PHP出了個SQL Server的擴展(Windows版本的),對於Windows下使用php開發SQL Server應用來說,這個擴展有利於利用SQL Server來開發php平台連接sql server數據庫管理系統。
一、php5.3以下的版本連接sql server
5.3以下的版本擴展里面自帶一個php_mssql.dll;接數據庫的擴展,可以利用這個擴展鏈接數據庫,(只限於鏈接低版本數據庫)。
具體的步驟如下:
1:首先安裝sql server,超級不好安裝,我之前安裝的是2008版本的,Windows過期后就不能用了,然后重裝還裝不上,最后重裝系統才裝上
2:確定SQL裝的時候用的是混合認證模式,或SQL驗證模式,然后打開php的配置文件(php.ini),開啟mssql擴展(extension=php_pdo_mssql.dll前面的分號去掉)並且需要把mssql.secure_connection = On 重啟后生效。
如果比較順利的話已經可以連接數據庫了,如果連不上就需要繼續低下的配置:
3:檢查ntwdblib文件的版本(php/下面和Apache/下面)下載正確的版本的 ntwdblib.dll(2000.80.194.0)覆蓋現有的DLL文件,(把ntwdblib.dll,php_mssql.dll 復制到system32目錄中也可以)ntwdblib.dll 用於PHP連接MSSQL2005或2008的驅動文件。
4:測試連接:mssql_connect('localhost,1433', '用戶名', '密碼');
二、php5.3+連接sql server
其實5.3以下的php版本已經很少用了,況且安全性和兼容性都不好,所以高版本的php還是比較常見的。實踐證明低版本的php連接數據庫成功率比較低(2005以上的版本幾乎不能使用),推薦使用php5.3+ php使用微軟專門的擴展 SQLSRV 來連接sqlserver數據庫
步驟如下:
1:先到微軟網站下載 SQL Server Driver for PHP (https://www.microsoft.com/en-us/download/details.aspx?id=20098)是一個自解壓的EXE文件,解壓縮后你會得到這么幾個文件:

其中的52、53表示就是php的5.2.x和5.3.x 版本,選擇跟你php版本相匹配的;vc6或vc9的選擇要看你使用的是什么web服務器軟件,如果使用的是IIS那就選擇vc9的,如果是Apache則選擇vc6的,ts和nts的選擇要看你安裝的php版本是線程安全版的還是非線程安全版,ts是線程安全,nts是非線程安全。
如果不知道可以在phpinfo里看Zend Extension Build這個屬性如下圖:



2:將擴展拷貝到拷到php/ext目錄下,在php.ini文件,添加一下代碼:
extension=在ext下的pdo擴展(用於pdo)
extension=在ext下的擴展
3:重啟服務器,打開phpinfo();看到以下狀態就證明添加擴展成功,


4:連接測試:

 1 <?php
 2     $serverName = "(local)";
 3     $connectionInfo =  array("UID"=>"sa","PWD"=>"admin","Database"=>"db_online");
 4     $conn = sqlsrv_connect( $serverName, $connectionInfo);
 5     if( $conn ){
 6          echo "Connection established.\n";
 7     }else{
 8          echo "Connection could not be established.\n";
 9          die( var_dump(sqlsrv_errors()));
10     }
11     sqlsrv_close( $conn);
12 ?>

注意這里的連接不是用mssql_connect而是用sqlsrv_connect,在這個版本中,還有幾個函數:
這個擴展為php新增了一系列sqlsrv_開頭的函數,常用的如下:

 1 sqlsrv_connect
 2 sqlsrv_close
 3 sqlsrv_commit
 4 sqlsrv_errors
 5 sqlsrv_fetch
 6 sqlsrv_fetch_array
 7 sqlsrv_fetch_metadata
 8 sqlsrv_num_rows
 9 sqlsrv_query
10 sqlsrv_rollback
11 sqlsrv_rows_affected
12 . . . 

詳細信息可以參考:https://msdn.microsoft.com/zh-cn/library/cc296161%28v=SQL.90%29.aspx 開發文檔

另外注意的是,如果使用這個擴展連接Sql server 2005以及以上版本的sql server(如sql server 2008),你還需要在機器上先安裝 SQL Server Native Client
不然會出現如下錯誤:

 1 array
 2 0 =>array
 3 0 =>string'IMSSP'(length=5)
 4     'SQLSTATE' =>string'IMSSP'(length=5)
 5 1 =>int-49
 6     'code' =>int-49
 7 2 =>string'This extension requires the Microsoft SQL Server 2012 Native Client. Access the     following URL to download the Microsoft SQL Server 2012 Native Client ODBC driver for x86: http://go.microsoft.com/fwlink/?LinkId=163712'(length=216)
 8 'message' =>string'This extension requires the Microsoft SQL Server 2008 Native Client. Access the following URL to download the Microsoft SQL Server 2008 Native Client ODBC driver for x86: http://go.microsoft.com/fwlink/?LinkId=163712'(length=216)
 9 1 =>array
10 0 =>string'IM002'(length=5)
11     'SQLSTATE' =>string'IM002'(length=5)
12 1 =>int0
13     'code' =>int0
14 2 =>string'[Microsoft][ODBC 驅動程序管理器] 未發現數據源名稱並且未指定默認驅動程序'(length=71)
15 'message' =>string'[Microsoft][ODBC 驅動程序管理器] 未發現數據源名稱並且未指定默認驅動程序'(length=71)
16 . . . .

解決方法:需要安裝SQL Server 2008 Native Client ODBC Driver,下載安裝文件sqlncli.msi 下載地址:http://download.microsoft.com/download/0/E/6/0E67502A-22B4-4C47-92D3-0D223F117190/sqlncli.msi 安裝后就可以了。

總結:到此全部完成,我在自己的電腦上裝了大半天,中間出現了各種錯誤,總體感覺微軟的東西太不好用。不是萬不得已誰去用php鏈接sql server,鏈接mysql不就得了。

相關安裝鏈接:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM