這邊使用的是Windows主機安裝Xampp架設的Web Server環境,然而在其他的系統沒有嘗試使用過。
php sqlsrv安裝
首先安裝好xampp。這邊使用的版本為PHP 5.6.15。若想知道自己的php版本可以使用以下php函數方式查看。
<?php phpinfo(); ?>
{googleads center}
再來我們需要下載微軟的PHP for SQL Server driver
php_sqlsrv.dll
這個分別有兩個.dll檔案
然而照版本說明PHP 5.6 需要下載 versions 3.2。
Drive下載位置:https://www.microsoft.com/en-us/download/details.aspx?id=20098
若你的php版本較新可在這下載 Download the DLL here (both 7.0. and 7.1.can be found)
主要要使用哪兩個檔案,這邊需要看你是使用哪個PHP版本,這個若你在PHP資料夾內看到php5ts.dll,你就是屬於Thread safe版的,而這兩個版本主要區別在,你是使用iis架設,還是apache架設的。xampp當然是apache了。
使用解壓縮軟體,或使直接執行下載下了的SQLSRV32.EXE檔案,把與你php版本對應的.dll,這邊是使用
php_sqlsrv_56_ts.dll
與php_pdo_sqlsrv_56_ts.dll
,放入C:xamppphpext開啟C:xamppphpphp.ini
在最底下加入這兩行,儲存檔案
extension=php_sqlsrv_56_ts.dll extension=php_pdo_sqlsrv_56_ts.dll
這時可以檢查phpinfo頁面,若沒有出現sqlsrv,表示你的server無法執行Visual C++,需要另外安裝。
下載網址:https://www.microsoft.com/zh-tw/download/details.aspx?id=30679
這個php版本是使用32bit 所以下載安裝2012 visual c++ 32bit
記得完成這些動作要重新啟動Apache。打開XAMPP控制面板按下Apache Stop 在 Start。
完成後,再重新整理phpinfo.php頁面,搜尋sqlsrv看見以下畫面代表成功安裝了這個外掛。
{googleads center}
mssql連結設定
需要安裝Microsoft® ODBC Driver 11 for SQL Server
下載的網址如下:看你的作業系統安裝64還是32的版本。
https://www.microsoft.com/en-us/download/details.aspx?id=36434
接下來就是mssql的連線,這邊我使用另一台主機做測試,也就是遠端方式,不用localhost。
在遠端的主機上安裝好mssql server 2008 r2 這個版本。
接下來可以建立一個php檔案做測試連結,以下sqlsrv資料庫連結語法。傳回"Connection established."代表成功。(如果不成功可以看一下php sqlsrv_errors()連線的錯誤訊息)
<?php $serverName = "192.168.1.123"; //serverNameinstanceName $connectionInfo = array( "Database"=>"table", "UID"=>"sa", "PWD"=>"Test321123", "CharacterSet" => "UTF-8"); $conn = sqlsrv_connect( $serverName, $connectionInfo); if( $conn ) { echo "Connection established.<br />"; }else{ echo "Connection could not be established.<br />"; die( print_r( sqlsrv_errors(), true)); } // Close the connection. sqlsrv_close($conn); ?>
若要讀出資料庫內的表單欄位可以這樣做。("CharacterSet" => "UTF-8" 設定中文不亂碼)
<?php $serverName = "192.168.1.123"; //serverNameinstanceName $connectionInfo = array( "Database"=>"table", "UID"=>"sa", "PWD"=>"Tah321123", "CharacterSet" => "UTF-8"); $conn = sqlsrv_connect( $serverName, $connectionInfo); $result = sqlsrv_query($conn, "SELECT * FROM Table_1"); //select Table_1資料表 if($result === false) { die( print_r( sqlsrv_errors(), true) ); } else{ while( $row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC) ) { echo $row['ID'].", ".$row['SAA']."<br />"; //echo資料欄ID 與 SAA列 } } // Close the connection. sqlsrv_close($conn); ?>
相關的SQLSRV Driver API Reference可以查照一下網址
https://msdn.microsoft.com/en-us/library/cc296152(v=sql.105).aspx