php如何連接sql server
說明:
1:PHP5.2.x本身有個php_mssql.dll的擴(kuò)展用來連接Sql server,但是這個dll只是用來連接低版本 Sql server的(2000以下版本),在Sql server 2005及以上版本無法使用mssql_connect連接到數(shù)據(jù)庫。
2:php5.3.x不再支持php_mssql.dll 拓展庫了,及時使用php5.2.x中的php_mssql.dll也無法使用。 微軟專門為PHP出了個SQL Server的擴(kuò)展(Windows版本的),對于Windows下使用php開發(fā)SQL Server應(yīng)用來說,這個擴(kuò)展有利于利用SQL Server來開發(fā)php平臺連接sql server數(shù)據(jù)庫管理系統(tǒng)。
一、php5.3以下的版本連接sql server
5.3以下的版本擴(kuò)展里面自帶一個php_mssql.dll;接數(shù)據(jù)庫的擴(kuò)展,可以利用這個擴(kuò)展鏈接數(shù)據(jù)庫,(只限于鏈接低版本數(shù)據(jù)庫)。
具體的步驟如下:
1:首先安裝sql server,超級不好安裝,我之前安裝的是2008版本的,Windows過期后就不能用了,然后重裝還裝不上,最后重裝系統(tǒng)才裝上
2:確定SQL裝的時候用的是混合認(rèn)證模式,或SQL驗證模式,然后打開php的配置文件(php.ini),開啟mssql擴(kuò)展 (extension=php_pdo_mssql.dll前面的分號去掉)并且需要把mssql.secure_connection = On 重啟后生效。
如果比較順利的話已經(jīng)可以連接數(shù)據(jù)庫了,如果連不上就需要繼續(xù)低下的配置:
3: 檢查ntwdblib文件的版本(php/下面和Apache/下面)下載正確的版本的 ntwdblib.dll(2000.80.194.0)覆蓋現(xiàn)有的DLL文件,(把ntwdblib.dll,php_mssql.dll 復(fù)制到system32目錄中也可以)ntwdblib.dll 用于PHP連接MSSQL2005或2008的驅(qū)動文件。
4:測試連接:mssql_connect('localhost,1433', '用戶名', '密碼');
二、php5.3+連接sql server
其 實5.3以下的php版本已經(jīng)很少用了,況且安全性和兼容性都不好,所以高版本的php還是比較常見的。實踐證明低版本的php連接數(shù)據(jù)庫成功率比較低 (2005以上的版本幾乎不能使用),推薦使用php5.3+ php使用微軟專門的擴(kuò)展 SQLSRV 來連接sqlserver數(shù)據(jù)庫
步驟如下:
1:先到微軟網(wǎng)站下載 SQL Server Driver for PHP 是一個自解壓的 EXE文件,解壓縮后你會得到這么幾個文件:
其中的52、53表示就是php的5.2.x和5.3.x 版本,選擇跟你php版本相匹配的;vc6或vc9的選擇要看你使用的是什么web服務(wù)器軟件,如果使用的是IIS那就選擇vc9的,如果是Apache 則選擇vc6的,ts和nts的選擇要看你安裝的php版本是線程安全版的還是非線程安全版,ts是線程安全,nts是非線程安全。
如果不知道可以在phpinfo里看Zend Extension Build這個屬性如下圖:
2:將擴(kuò)展拷貝到拷到php/ext目錄下,在php.ini文件,添加一下代碼:
extension=在ext下的pdo擴(kuò)展(用于pdo)
extension=在ext下的擴(kuò)展
3:重啟服務(wù)器,打開phpinfo();看到以下狀態(tài)就證明添加擴(kuò)展成功,
4:連接測試:
<?php $serverName = "(local)"; $connectionInfo = array("UID"=>"sa","PWD"=>"admin","Database"=>"db_online"); $conn = sqlsrv_connect( $serverName, $connectionInfo); if( $conn ){ echo "Connection established.\n"; }else{ echo "Connection could not be established.\n"; die( var_dump(sqlsrv_errors())); } sqlsrv_close( $conn); ?>
注意這里的連接不是用mssql_connect而是用sqlsrv_connect,在這個版本中,還有幾個函數(shù):
這個擴(kuò)展為php新增了一系列sqlsrv_開頭的函數(shù),常用的如下:
sqlsrv_connect
sqlsrv_close
sqlsrv_commit
sqlsrv_errors
sqlsrv_fetch
sqlsrv_fetch_array
sqlsrv_fetch_metadata
sqlsrv_num_rows
sqlsrv_query
sqlsrv_rollback
sqlsrv_rows_affected
. . .
另外注意的是,如果使用這個擴(kuò)展連接Sql server 2005以及以上版本的sql server(如sql server 2008),你還需要在機(jī)器上先安裝 SQL Server Native Client
不然會出現(xiàn)如下錯誤:
array
0 =>array
0 =>string'IMSSP'(length=5)
'SQLSTATE' =>string'IMSSP'(length=5)
1 =>int-49
'code' =>int-49
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)
'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)
1 =>array
0 =>string'IM002'(length=5)
'SQLSTATE' =>string'IM002'(length=5)
1 =>int0
'code' =>int0
2 =>string'[Microsoft][ODBC 驅(qū)動程序管理器] 未發(fā)現(xiàn)數(shù)據(jù)源名稱并且未指定默認(rèn)驅(qū)動程序'(length=71)
'message' =>string'[Microsoft][ODBC 驅(qū)動程序管理器] 未發(fā)現(xiàn)數(shù)據(jù)源名稱并且未指定默認(rèn)驅(qū)動程序'(length=71)
. . . .
解決方法:需要安裝SQL Server 2008 Native Client ODBC Driver,下載安裝文件sqlncli.msi,安裝后就可以了。
以上就是php連接sql server的方法,希望對大家解決類似問題有所幫助。
- Windows Server 2019 IIS10.0+PHP(FastCGI)+MySQL環(huán)境搭建教程
- php連接MSsql server的五種方法總結(jié)
- php連接微軟MSSQL(sql server)完全攻略
- windows server 2008/2012安裝php iis7 mysql環(huán)境搭建教程
- win2008 r2 服務(wù)器php+mysql+sqlserver2008運(yùn)行環(huán)境配置(從安裝、優(yōu)化、安全等)
- PHP連接SQLServer2005方法及代碼
- 為PHP模塊添加SQL SERVER2012數(shù)據(jù)庫的步驟詳解
相關(guān)文章
PHP實現(xiàn)查詢兩個數(shù)組中不同元素的方法
這篇文章主要介紹了PHP實現(xiàn)查詢兩個數(shù)組中不同元素的方法,涉及PHP數(shù)組差集運(yùn)算與數(shù)組合并的相關(guān)技巧,需要的朋友可以參考下2016-02-02PHP使用自定義key實現(xiàn)對數(shù)據(jù)加密解密的方法
這篇文章主要介紹了PHP使用自定義key實現(xiàn)對數(shù)據(jù)加密解密的方法,涉及php針對字符串的轉(zhuǎn)換、截取等操作實現(xiàn)加密解密功能的相關(guān)技巧,需要的朋友可以參考下2017-12-12執(zhí)行、獲取遠(yuǎn)程代碼返回:file_get_contents 超時處理的問題詳解
本篇文章是對執(zhí)行、獲取遠(yuǎn)程代碼返回:file_get_contents 超時處理的問題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06PHP的Yii框架中Model模型的學(xué)習(xí)教程
這篇文章主要介紹了PHP的Yii框架中Model模型的學(xué)習(xí)教程,Yii框架本身就顯龐大,所以模型類也就更加需要很好的編寫維護(hù),需要的朋友可以參考下2016-03-03