PHP 5.6.11 訪問SQL Server2008R2的幾種情況詳解
PHP天生支持MySQL,但是有時(shí)候也想讓它訪問SQL Server,該怎么辦呢?
最近找了點(diǎn)資料,測(cè)試成功了PHP訪問SQLSvr的幾種情況,限于時(shí)間,還沒有測(cè)試更多不同環(huán)境,把測(cè)試過的記錄如下:
測(cè)試環(huán)境: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”驅(qū)動(dòng)程序目前只有32位版,所以如果是使用sql server數(shù)據(jù)庫(kù)的朋友,不建議使用php 64位,否則會(huì)導(dǎo)致無(wú)法連接 sql server 數(shù)據(jù)庫(kù)的問題!
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版本做測(cè)試呢,因?yàn)閜hp 5.2版本,內(nèi)置了php_mssql.dll 模塊,
打開了php.ini中的extension=php_mssql.dll 配置選項(xiàng),默認(rèn)好像就支持mssql2000了,
打開phpinfo能看到相關(guān)的支持模塊內(nèi)容:

PS.IIS 7.0下安裝PHP現(xiàn)在方便了,可以通過一個(gè)第三方小工具 PHP Manager來安裝,也可以方便的切換iis下的php版本,這不是本文的主要內(nèi)容,這里就不介紹了;
php manager for iis 7 下載安裝地址: http://phpmanager.codeplex.com/


寫一個(gè)測(cè)試的小例程:
<?php
$server ="127.0.0.1\sql2000"; //服務(wù)器IP地址,如果是本地,可以寫成localhost
$uid ="sa"; //用戶名
$pwd ="yoooko"; //密碼
$database ="master"; //數(shù)據(jù)庫(kù)名稱
//進(jìn)行數(shù)據(jù)庫(kù)連接
$conn =mssql_connect($server,$uid,$pwd) or die ("connect failed");
mssql_select_db($database,$conn);
//執(zhí)行查詢語(yǔ)句
$query ="select * from cs";
$row =mssql_query($query);
//打印輸出查詢結(jié)果
while($list=mssql_fetch_array($row))
{
print_r($list);
echo "<br>";
}
?>
在IIS 7.5下運(yùn)行結(jié)果如下:成功!

【5.6.11 -> SQL2008R2】
5.6以上的PHP已經(jīng)沒有php_mssql.dll,貌似也不再原生支持sql2000以上版本的sql server了,要通過第三方模塊,在微軟官網(wǎng)找到了:
Microsoft Drivers for PHP for SQL Server
http://www.microsoft.com/en-us/download/details.aspx?id=20098
下載鏈接地址有四個(gè)文件:
•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要下載一個(gè)SQLSRV20.EXE,這個(gè)文件目前在網(wǎng)上也能很容易的找到;
(雖然5.2這么舊的版本早就該被淘汰了,但是考慮到某些環(huán)境還需要用它)
php_pdo_sqlsrv_52_ts_vc6.dll
php_sqlsrv_52_ts_vc6.dll

1. 我手里是PHP 5.6.11 win32 ts,要用到這個(gè)
php_sqlsrv_56_ts.dll
php_pdo_sqlsrv_56_ts.dll
這兩個(gè)文件,復(fù)制到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應(yīng)該此時(shí)就能訪問SQL Server 2008R2了;


5、寫一個(gè)小程序驗(yàn)證一下:
<?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!";
?>
如果出現(xiàn)如下提示:

可能你還需要安裝 Microsoft® ODBC Driver 11 for SQL Server® - Windows
下載地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=36434

如果正確的話,應(yīng)該就OK了:
PS.由于新的模塊是通過PDO方式訪問SQL Server 2008R2,如果是本機(jī)訪問,那么直接通過ip地址和sa賬號(hào)就能訪問了,
如果php和sql2008r2在不同電腦上,還得設(shè)置TCP 端口1433來訪問,見下面第二張圖,把動(dòng)態(tài)端口改為0,把端口設(shè)置為14333如果你的SQL2000已經(jīng)占用了1433,訪問地址后面加個(gè),xxxx端口號(hào)
sqlsrv:Server=192.168.1.xxx\sql2008r2,14333;Database=master


以上所述是小編給大家介紹的PHP 5.6.11 訪問SQL Server2008R2的幾種情況詳解,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- Linux編譯mssql擴(kuò)展使用php連接sqlserver2008的使用步驟
- Windows平臺(tái)實(shí)現(xiàn)PHP連接SQL Server2008的方法
- Windows Server 2008 R2和2012中PHP連接MySQL過慢的解決方法
- PHP連接SQL Server的方法分析【基于thinkPHP5.1框架】
- ThinkPHP2.0讀取MSSQL提示Incorrect syntax near the keyword ''AS''的解決方法
- thinkphp3查詢mssql數(shù)據(jù)庫(kù)亂碼解決方法分享
- php5.3中連接sqlserver2000的兩種方法(com與ODBC)
- 用php和MySql來與ODBC數(shù)據(jù)連接
- PHP7使用ODBC連接SQL Server2008 R2數(shù)據(jù)庫(kù)示例【基于thinkPHP5.1框架】
相關(guān)文章
yii2.0實(shí)現(xiàn)創(chuàng)建簡(jiǎn)單widgets示例
這篇文章主要介紹了yii2.0實(shí)現(xiàn)創(chuàng)建簡(jiǎn)單widgets的方法,結(jié)合實(shí)例形式分析了Yii中widgets的基本創(chuàng)建及使用方法,需要的朋友可以參考下2016-07-07
PHP批量查詢WordPress留言者E-mail地址實(shí)現(xiàn)方法
這篇文章主要介紹了PHP批量查詢WordPress留言者E-mail地址實(shí)現(xiàn)方法,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-02-02
PHP刪除字符串中非字母數(shù)字字符方法總結(jié)
在本篇文章里小編給大家分享了關(guān)于PHP刪除字符串中非字母數(shù)字字符方法和知識(shí)點(diǎn),有需要的朋友們學(xué)習(xí)下。2019-01-01
Thinkphp中volist標(biāo)簽mod控制一定記錄的換行BUG解決方法
這篇文章主要介紹了Thinkphp中volist標(biāo)簽mod控制一定記錄的換行BUG解決方法,涉及針對(duì)標(biāo)簽執(zhí)行語(yǔ)句順序的修改,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-11-11
CodeIgniter表單驗(yàn)證方法實(shí)例詳解
這篇文章主要介紹了CodeIgniter表單驗(yàn)證方法,結(jié)合實(shí)例形式詳細(xì)分析了CodeIgniter進(jìn)行表單驗(yàn)證的具體步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-03-03
PHP設(shè)計(jì)模式(五)適配器模式Adapter實(shí)例詳解【結(jié)構(gòu)型】
這篇文章主要介紹了PHP設(shè)計(jì)模式:適配器模式Adapter,結(jié)合實(shí)例形式詳細(xì)分析了PHP適配器模式Adapter基本概念、功能、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-05-05

