php連接微軟MSSQL(sql server)完全攻略
在研究ezSQL的時(shí)候就看到了mssql_connect()等一些php提供的連接MSSQL的函數(shù),本以為php這個(gè)開(kāi)源的風(fēng)靡世界的編程語(yǔ)言對(duì)連接微軟的數(shù)據(jù)應(yīng)該是不在話(huà)下的,但是到真正執(zhí)行的時(shí)候,才發(fā)現(xiàn)困難多多。
一開(kāi)始我下載的php版本是5.93的,下載下來(lái)添加環(huán)境變量等等搞了半天后,phpinfo()這個(gè)函數(shù)終于成功的運(yùn)行在瀏覽器中了。然后當(dāng)我在滿(mǎn)世界的找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沒(méi)有辦法運(yùn)行:“SQLSRV30.EXE 不是有效的win32程序”。
在網(wǎng)上搜索了半天,總結(jié)了以下一些可行的辦法,但是在這之前你需要:
配置MICROSOFT SQL SERVER
1、下載并安裝sql server?,F(xiàn)在這個(gè)版本就比較多了從2000 到2008不等,找一個(gè)你自己下載吧。
2、開(kāi)放tcp/ip連接方式,使得數(shù)據(jù)庫(kù)能夠遠(yuǎn)程訪問(wèn)。SQL Server Configuration Manager -> Network Configuration -> Protocols -> TCP/IP enabled
3、打開(kāi)數(shù)據(jù)管理界面,添加用戶(hù)和數(shù)據(jù)庫(kù)。
4、安裝php和配置IIS服務(wù)。
5、打開(kāi)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è)試連接了:
//連接MSSQL
$conn=mssql_connect("實(shí)例名或者服務(wù)器IP","用戶(hù)名","密碼");
//測(cè)試連接
if($conn)
{
echo "連接成功";
}
Microsoft Drivers for SQL Server for PHP
2008年7月微軟發(fā)布了一個(gè)新的為php連接SQL Server的驅(qū)動(dòng),它改善了php自帶的連接MSSQL函數(shù)的一些缺點(diǎn),并且是以php擴(kuò)展插件的形式開(kāi)發(fā)的,通過(guò)它你可以用php輕松的讀寫(xiě)微軟的數(shù)據(jù)庫(kù)了。
如果你服務(wù)器使用的是IIS的話(huà),那么就一定要從這里去下載:
因?yàn)閺纳鲜鲦溄舆M(jìn)去其實(shí)是微軟整合的網(wǎng)絡(luò)開(kāi)發(fā)平臺(tái),只提供在線(xiàn)安裝,但是很方便的整合了PDO插件和php,當(dāng)然還有微軟的其它一些開(kāi)發(fā)功能,但是如果你沒(méi)需要,你可以不裝了,那些是在visual studio中的。
但是如果你用的是 Apache的話(huà),你可以去這里直接下載這個(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,也有可能是沒(méi)有用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版本是線(xiàn)程安全版的還是非線(xiàn)程安全版,ts是線(xiàn)程安全,nts是非線(xiàn)程安全。
4)重啟Apache
5)連接數(shù)據(jù)庫(kù)
測(cè)試連接代碼:
<?php
//本地測(cè)試的服務(wù)名
"(local)";
//使用sql server身份驗(yàn)證,參數(shù)使用數(shù)組的形式,一次是用戶(hù)名,密碼,數(shù)據(jù)庫(kù)名
//如果你使用的是windows身份驗(yàn)證,那么可以去掉用戶(hù)名和密碼
$connectionInfo = array( "UID"=>"root",
"PWD"=>"root2010",
"Database"=>"master");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn )
{
echo "Connection established.\n";
}
else
{
echo "Connection could not be established.\n";
die( print_r( sqlsrv_errors(), true));
}
?>
在windows下使用FreeTDS
什么是FreeTDS? FreeTDS其實(shí)就是一個(gè)開(kāi)源(或者可以說(shuō)成自由)的C程序庫(kù),它可以實(shí)現(xiàn)在Linux系統(tǒng)下訪問(wèn)操作微軟的SQL數(shù)據(jù)庫(kù)。可以用在Sybase的db-lib或者ct-lib庫(kù),在里面也包含了一個(gè)ODBC的庫(kù)。允許許多應(yīng)用軟件連接到Sybase或者微軟的SQL服務(wù)器。FreeTDS是以源碼的現(xiàn)實(shí)發(fā)布的,正因?yàn)槭沁@樣,所以它幾乎可以在任何系統(tǒng)中進(jìn)行編譯安裝。
如如你的服務(wù)器是Windows系統(tǒng), 那么你應(yīng)該使用 php_dblib.dll。(more information on Using FreeTDS for Unix.)
通常我們可以在這個(gè)網(wǎng)站上找到這些DLL文件- Frank Kromann's site, 但是它基本上很多都已經(jīng)過(guò)時(shí)了,并且會(huì)引發(fā)很多的問(wèn)題,因此我們推薦windows下使用PHP 5.2.x版本,并且看看下面的建議 :
1. 按照下面的表格來(lái)下載 php_dblib.dll 并且將其保存到 /PHP/ext 文件夾下面.
| PHP version | Thread Safe | FreeTDS version | Download URL |
|---|---|---|---|
| PHP 5.2.x (vc6) | Yes | 0.82 + 20090302 patches | Download! |
| No | 0.82 + 20090302 patches | Download! | |
| PHP 5.3.x (vc9) | Yes | 0.82 + 20090904 patches | Download! |
| No | 0.82 + 20090904 patches | Download! | |
| PHP 5.4.x (vc9) | Yes | 0.82 + 20110906 patches | Download! FTP Download! |
| No | 0.82 + 20110906 patches | Download! FTP Download! |
2、 FreeTDS 需要安裝 .NET Framework v1.1 ,你可以到微軟的網(wǎng)站去下載?;蛘吣闳rank's site 下載需要的DLL文件,并保存到你的/PHP根目錄下面。
3、在php配置文件 /PHP/php.ini 中添加:
extension=php_dblib.dll
4、當(dāng)php引擎啟動(dòng)FreeTDS模塊的時(shí)候需要傳遞一些信息,使得FreeTDS能夠連接到它的默認(rèn)的數(shù)據(jù)庫(kù)。因此它的需要在freetds.conf中定義數(shù)據(jù)庫(kù)連接的基本信息,該文件在其根目錄下,可以按照你的情況來(lái)進(jìn)行修改:
[global]
host = xxx.xxx.xxx.xxx (host name or ip of the MSSQL server)
port = 1433
client charset = UTF-8
tds version = 8.0
text size = 20971520
5、創(chuàng)建config.php文檔來(lái)定義數(shù)據(jù)庫(kù)連接參數(shù):
$CFG->dbtype = 'mssql'; // Required $CFG->dbhost = 'localhost'; // assuming MS SQL is on the same server, otherwise use an IP $CFG->dbname = 'moodle'; // or whatever you called the database you created $CFG->dbuser = 'yourusername'; // I usually use the 'sa' account (dbowner perms are enough) $CFG->dbpass = 'yourpassword'; $CFG->dbpersist = false; $CFG->prefix = 'mdl_'; //Prefix, you can change it, but NEVER leave it blank.
6、 重啟你的網(wǎng)站,如果還是沒(méi)有連接到你的數(shù)據(jù)庫(kù)的話(huà),在 /PHP/php.ini文件中將display_startup_errors改為"On",當(dāng)你解決了這些問(wèn)題之后再將錯(cuò)誤報(bào)告改為“Off”;
7、測(cè)試你的網(wǎng)站,建立test.php文件,代碼如下,訪問(wèn)http://localhost/test.php進(jìn)行測(cè)試
<?php
$link = mssql_connect('localhost', 'db_user', 'db_password');
if(!$link) {
echo'Could not connect';
die('Could not connect: ' . mssql_error());
}
echo'Successful connection';
mssql_close($link);
?>
好了windows下使用FreeTDS網(wǎng)上的資料一大堆就不再講了,至此,此篇日志結(jié)束。
相關(guān)文章
php使用curl判斷網(wǎng)頁(yè)404(不存在)的方法
這篇文章主要介紹了php使用curl判斷網(wǎng)頁(yè)404(不存在)的方法,通過(guò)curl獲取http頭信息進(jìn)行404錯(cuò)誤判斷,非常簡(jiǎn)便易懂,需要的朋友可以參考下2016-06-06
PHP簡(jiǎn)單實(shí)現(xiàn)數(shù)字分頁(yè)功能示例
這篇文章主要介紹了PHP簡(jiǎn)單實(shí)現(xiàn)數(shù)字分頁(yè)功能,結(jié)合實(shí)例形式分析了php數(shù)字分頁(yè)相關(guān)的數(shù)學(xué)運(yùn)算與字符串操作相關(guān)技巧,需要的朋友可以參考下2016-08-08
php實(shí)現(xiàn)用戶(hù)在線(xiàn)時(shí)間統(tǒng)計(jì)詳解
php實(shí)現(xiàn)用戶(hù)在線(xiàn)時(shí)間統(tǒng)計(jì)詳解,需要的朋友可以參考下。2011-10-10
php實(shí)現(xiàn)無(wú)限級(jí)分類(lèi)(遞歸方法)
當(dāng)你學(xué)習(xí)php無(wú)限極分類(lèi)的時(shí)候,大家都覺(jué)得一個(gè)字“難”我也覺(jué)得很難,所以,現(xiàn)在都還在看,因?yàn)楣ぷ饕玫剑?,就必須得研究研究?/div> 2015-08-08
php中關(guān)于token驗(yàn)證的相關(guān)問(wèn)題詳解
這篇文章主要介紹了php中關(guān)于token驗(yàn)證的相關(guān)問(wèn)題詳解的相關(guān)資料,需要的朋友可以參考下2023-05-05最新評(píng)論

