首頁  >  文章  >  後端開發  >  PHP 5.6.11 存取SQL Server2008R2的幾種情況詳解_php實例

PHP 5.6.11 存取SQL Server2008R2的幾種情況詳解_php實例

WBOY
WBOY原創
2016-08-17 13:02:321361瀏覽

PHP天生支援MySQL,但有時候也想讓它存取SQL Server,該怎麼辦呢?

最近找了點資料,測試成功了PHP訪問SQLSvr的幾個情況,限於時間,還沒有測試更多不同環境,把測試過的記錄如下:

測試環境: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」驅動程式目前只有32位元版,所以如果是使用sql server資料庫的朋友,不建議使用php 64位,否則會導致無法連接 sql server 資料庫的問題!

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版本做測試呢,因為php 5.2版本,內建了php_mssql.dll 模組,

開啟了php.ini中的extension=php_mssql.dll 設定選項,預設好像就支援mssql2000了,

打開phpinfo能看到相關的支援模組內容:

PS.IIS 7.0下安裝PHP現在方便了,可以透過一個第三方小工具 PHP Manager來安裝,也可以方便的切換iis下的php版本,這不是本文的主要內容,這裡就不介紹了;

php manager for iis 7 下載安裝網址: http://phpmanager.codeplex.com/

寫一個測試的小例程:

<&#63;php
$server ="127.0.0.1\sql2000"; //服务器IP地址,如果是本地,可以写成localhost
$uid ="sa"; //用户名
$pwd ="yoooko"; //密码
$database ="master"; //数据库名称
//进行数据库连接
$conn =mssql_connect($server,$uid,$pwd) or die ("connect failed");
mssql_select_db($database,$conn);
//执行查询语句
$query ="select * from cs";
$row =mssql_query($query);
//打印输出查询结果
while($list=mssql_fetch_array($row))
{
print_r($list);
echo "<br>";
}
&#63;>

在IIS 7.5下運行結果如下:成功!

【5.6.11 -> SQL2008R2】

5.6以上的PHP已經沒有php_mssql.dll,貌似也不再原生支援sql2000以上版本的sql server了,要透過第三方模組,在微軟官網找到了:

Microsoft Drivers for PHP for SQL Server

http://www.microsoft.com/en-us/download/details.aspx?id=20098

下載連結位址有四個檔案:

•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要下載一個SQLSRV20.EXE,這個檔案目前在網路上也能很容易的找到;

(雖然5.2這麼舊的版本早就該被淘汰了,但是考慮到某些環境還需要用它)

php_pdo_sqlsrv_52_ts_vc6.dll

php_sqlsrv_52_ts_vc6.dll

1. 我手上是PHP 5.6.11 win32 ts,要用到這個

php_sqlsrv_56_ts.dll
php_pdo_sqlsrv_56_ts.dll

這兩個文件,複製到phpext目錄下,

2. php.ini 裡加上以下兩句:

extension=C:PHP5extphp_sqlsrv_56_ts.dll
extension=C:PHP5extphp_pdo_sqlsrv_56_ts.dll

3. 重啟IIS或Apache,

4. 透過phpinfo能夠看到以下模組顯示,我們的PHP應該此時就能存取SQL Server 2008R2了;

5、寫一個小程式驗證一下:

<&#63;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!";
&#63;>

如果出現以下提示:

可能你還需要安裝 Microsoft® ODBC Driver 11 for SQL Server® - Windows

下載網址:https://www.microsoft.com/zh-cn/download/details.aspx?id=36434

如果正確的話,應該就OK了:

PS.由於新的模組是透過PDO方式訪問SQL Server 2008R2,如果是本機訪問,那麼直接透過ip位址和sa帳號就能訪問了,

如果php和sql2008r2在不同電腦上,還得設定TCP 埠1433來訪問,見下面第二張圖,把動態埠改為0,把埠設定為14333如果你的SQL2000已經佔用了1433,存取位址後面加個,xxxx埠號

sqlsrv:Server=192.168.1.xxxsql2008r2,14333;Database=master



以上所述是小編給大家介紹的PHP 5.6.11 訪問SQL Server2008R2的幾種情況詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn