php連接mssql php連接mssql2005數(shù)據(jù)庫(kù)代碼
在研究ezSQL的時(shí)候就看到了mssql_connect()等一些php提供的連接MSSQL的函數(shù),本以為php這個(gè)開源的風(fēng)靡世界的編程語(yǔ)言對(duì)連接微軟的數(shù)據(jù)應(yīng)該是不在話下的,但是到真正執(zhí)行的時(shí)候,才發(fā)現(xiàn)困難多多。
一開始我下載的php版本是5.93的,下載下來(lái)添加環(huán)境變量等等搞了半天后,phpinfo()這個(gè)函數(shù)終于成功的運(yùn)行在瀏覽器中了。然后當(dāng)我在滿世界的找php_mssql.dll,才發(fā)現(xiàn)在5.3以及以上版本的php中已經(jīng)不是原生態(tài)的支持mssql了。
好不容易找到了微軟Microsoft Drivers 3.0 for PHP for SQL Server,心想微軟的東西應(yīng)該做的可以,卻無(wú)奈的發(fā)現(xiàn)SQLSRV30.EXE沒有辦法運(yùn)行:“SQLSRV30.EXE 不是有效的win32程序”。
在網(wǎng)上搜索了半天,總結(jié)了以下一些可行的辦法,但是在這之前你需要:
配置MICROSOFT SQL SERVER
1、下載并安裝sql server?,F(xiàn)在這個(gè)版本就比較多了從2000 到2008不等,找一個(gè)你自己下載吧。
2、開放tcp/ip連接方式,使得數(shù)據(jù)庫(kù)能夠遠(yuǎn)程訪問。SQL Server Configuration Manager -> Network Configuration -> Protocols -> TCP/IP enabled
3、打開數(shù)據(jù)管理界面,添加用戶和數(shù)據(jù)庫(kù)。
4、安裝php和配置IIS服務(wù)。
5、打開php所在文件夾里面的 php.ini文件,并添加:
1
2
|
mssql.textlimit = 20971520 mssql.textsize = 20971520 |
做完了這些之后,你可以按照下面三種方法來(lái)連接數(shù)據(jù)庫(kù)了:
使用php自帶的方法連接MSSQL(5.3及以后版本不適用)
確保php ext擴(kuò)展庫(kù)文件夾下有php_mssql.dll,然后在PHP.ini中的配置中,將
;extension=php_mssql.dll
前面的“;”去掉。
然后你可以測(cè)試連接了:
首先是mssql_connect方式,這種方式比較方便,但是可能會(huì)遇到服務(wù)器沒有安裝mssql模塊的情況。
$ms_host = "192.168.0.xx"; //主機(jī)
$ms_user = "sa"; //用戶名
$ms_pass = "aa"; //密碼
$ms_data = "test";?
$ms_connect = mssql_connect($ms_host, $ms_user, $ms_pass)
or die("Couldn't connect to SQL Server on $$ms_host");
?
$ms_select = mssql_select_db($ms_data, $ms_connect)
or die("Couldn't open database $ms_select");
?
$update?
?
?
$result = mssql_query($update);
return $result;
報(bào)錯(cuò)可能是:
(1) Call to undefined function mssql_connect() :這是因?yàn)闆]有開啟mssql模塊。
①在php.ini中找到:
extension=php_mssql.dll,和extension=php_pdo_mssql.dll,確定他們的前面沒有“;”。
②在php.ini中找到:
extension_dir = "C:\php\ext\"。這里是extension目錄,確認(rèn)這個(gè)目錄下有php_mssql.dll、php_pdo_mssql.dll。
③php.ini的位置,extension_dir的位置可以使用phpinfo()查看。
(2)mssql_connect() : Unable to connect to server: 192.168.0.xx:連接失敗,最可能是的是沒有開啟mssql的遠(yuǎn)程連接。這里有具體的開啟方法。
http://tech.ccidnet.com/art/1106/20090225/1689795_1.html
當(dāng)然,我的情況是這樣設(shè)置了以后還是不能連接,后來(lái)我注意到我的服務(wù)器上有一個(gè)運(yùn)行的圖標(biāo),而那臺(tái)雖然開啟了遠(yuǎn)程連接,而且用SQL Server Management Studio也可以正常連接的服務(wù)器則沒有這個(gè)圖標(biāo),也許是這個(gè)原因。具體是什么情況改天問一下mssql的專家們。
因?yàn)榱硪慌_(tái)服務(wù)器是iis的,沒有安裝php的mssql模塊,所以我采用odbc的連接方式,代碼如下:
$ms_host = "test"; //這里是ODBC的連接名稱
$ms_user = "test"; //用戶名
$ms_pass = "test123"; //密碼
?
$ms_connect =odbc_connect($ms_host, $ms_user, $ms_pass) or die("Couldn't connect to SQL Server on MSSQL");
在那臺(tái)服務(wù)器上建立一個(gè)odbc連接,具體操作是:
①打開控制面板-管理工具-數(shù)據(jù)源 (ODBC)-“系統(tǒng)DSN”的選項(xiàng)卡,點(diǎn)擊“添加”,在“創(chuàng)建新數(shù)據(jù)源”中選擇“SQL Native Client”。
②填入數(shù)據(jù)庫(kù)基本資料,因?yàn)槭潜镜財(cái)?shù)據(jù)庫(kù),所以填寫(local)
幾天一直都為php連接mssql的事而煩惱,因?yàn)樵囎龊芏喾N不同的方法都不行,原因一直都未明確。不過(guò),今日
我的php終于可以連接到mssql了。所以我接下來(lái),寫寫這幾天我所得的經(jīng)驗(yàn)。
1.首先,版本的問題。
?
?
?
?
?
?
?
?
?
?
2.開始配置php_mssql
?
?
?
?
?
?
?
?
?
3.連接mssql
?
?
?
?
?
?
?
?
?
?
?
?
這步是很多初學(xué)者剛用SQL server時(shí)忽略的一步,這步都是許多網(wǎng)上關(guān)于php連接mssql的文章中都是沒有的.
?
?
?
?
?
?
?
?
?
?
?
?
?
注:用PHP操作MSSQL比在ASP連接MYSQL要簡(jiǎn)單,所以,當(dāng)需要MSSQL與MYSQL并存時(shí),用PHP連接MSSQL來(lái)操作MYSQL與MSSQL并存比較簡(jiǎn)單好用.如果是ASP連接MYSQL,需要安裝一個(gè)MYSQL驅(qū)動(dòng),默認(rèn)windows的ODBC沒有安裝,很遺憾...
1.在web服務(wù)器上至少安裝了mssql的客戶端
2.打開php.ini把;extension=php_mssql.dll前面的分號(hào)去掉
有必要話:需要制定extension_dir
3.推薦使用php<=4.0.9<=5.0.3目前我還沒有連接成功過(guò)4.010和5.0.3
4.數(shù)據(jù)庫(kù)的連接分頁(yè)可以到phpe.net上獲取到相應(yīng)的class
下面是我根據(jù)那里修改的一個(gè)class
在研究ezSQL的時(shí)候就看到了mssql_connect()等一些php提供的連接MSSQL的函數(shù),本以為php這個(gè)開源的風(fēng)靡世界的編程語(yǔ)言對(duì)連接微軟的數(shù)據(jù)應(yīng)該是不在話下的,但是到真正執(zhí)行的時(shí)候,才發(fā)現(xiàn)困難多多。
一開始我下載的php版本是5.93的,下載下來(lái)添加環(huán)境變量等等搞了半天后,phpinfo()這個(gè)函數(shù)終于成功的運(yùn)行在瀏覽器中了。然后當(dāng)我在滿世界的找php_mssql.dll,才發(fā)現(xiàn)在5.3以及以上版本的php中已經(jīng)不是原生態(tài)的支持mssql了。
好不容易找到了微軟Microsoft Drivers 3.0 for PHP for SQL Server,心想微軟的東西應(yīng)該做的可以,卻無(wú)奈的發(fā)現(xiàn)SQLSRV30.EXE沒有辦法運(yùn)行:“SQLSRV30.EXE 不是有效的win32程序”。
在網(wǎng)上搜索了半天,總結(jié)了以下一些可行的辦法,但是在這之前你需要:
配置MICROSOFT SQL SERVER
1、下載并安裝sql server?,F(xiàn)在這個(gè)版本就比較多了從2000 到2008不等,找一個(gè)你自己下載吧。
2、開放tcp/ip連接方式,使得數(shù)據(jù)庫(kù)能夠遠(yuǎn)程訪問。SQL Server Configuration Manager -> Network Configuration -> Protocols -> TCP/IP enabled
3、打開數(shù)據(jù)管理界面,添加用戶和數(shù)據(jù)庫(kù)。
4、安裝php和配置IIS服務(wù)。
5、打開php所在文件夾里面的 php.ini文件,并添加:
mssql.textlimit = 20971520
mssql.textsize = 20971520
做完了這些之后,你可以按照下面三種方法來(lái)連接數(shù)據(jù)庫(kù)了:
使用php自帶的方法連接MSSQL(5.3及以后版本不適用)
確保php ext擴(kuò)展庫(kù)文件夾下有php_mssql.dll,然后在PHP.ini中的配置中,將
;extension=php_mssql.dll
前面的“;”去掉。
然后你可以測(cè)試連接了:
1 |
//連接MSSQL |
2 |
$conn =mssql_connect( "實(shí)例名或者服務(wù)器IP" , "用戶名" , "密碼" ); |
3 |
4 |
//測(cè)試連接 |
5 |
if ( $conn ) |
6 |
{ |
7 |
???? echo "連接成功" ; |
8 |
} |
Microsoft Drivers for SQL Server for PHP
2008年7月微軟發(fā)布了一個(gè)新的為php連接SQL Server的驅(qū)動(dòng),它改善了php自帶的連接MSSQL函數(shù)的一些缺點(diǎn),并且是以php擴(kuò)展插件的形式開發(fā)的,通過(guò)它你可以用php輕松的讀寫微軟的數(shù)據(jù)庫(kù)了。
如果你服務(wù)器使用的是IIS的話,那么就一定要從這里去下載:
http://php.iis.net/
因?yàn)閺纳鲜鲦溄舆M(jìn)去其實(shí)是微軟整合的網(wǎng)絡(luò)開發(fā)平臺(tái),只提供在線安裝,但是很方便的整合了PDO插件和php,當(dāng)然還有微軟的其它一些開發(fā)功能,但是如果你沒需要,你可以不裝了,那些是在visual studio中的。
但是如果你用的是 Apache的話,你可以去這里直接下載這個(gè)插件了,它其實(shí)是一個(gè)解壓文件,解壓出來(lái)幾個(gè)DLL文件,具體操作如下:
1)下載驅(qū)動(dòng)包:http://www.microsoft.com/en-us/download/details.aspx?id=20098.
2)將DLL文件解壓到 PHP extension_dir 目錄,如果出現(xiàn)說(shuō)SQLSRV30.EXE 不是有效的win32程序,可能是缺少某些庫(kù),可能是vc10,也有可能是沒有用administrator權(quán)限運(yùn)行。
extension_dir = “C:/PHP/ext”
3)在php.ini配置文件內(nèi)引用相應(yīng)的動(dòng)態(tài)鏈接庫(kù)文件
extension=php_sqlsrv_52_ts_vc6.dll
extension=php_pdo_sqlsrv_52_ts_vc6.dll
extension=php_pdo.dll
其中的52、53表示就是php的5.2.x和5.3.x 版本,選擇跟你php版本相匹配的;
選擇vc6或vc9的主要看你使用的是什么web服務(wù)器軟件,如果使用的是IIS那就選擇vc9的,如果是Apache則選擇vc6的。
至于ts和nts,就要看你安裝的php版本是線程安全版的還是非線程安全版,ts是線程安全,nts是非線程安全。
0 Comments.