[PHP][MSSQL]PHP連結SQL Server(MSSQL)的方法與測試連線

  • 4174
  • 0
  • PHP
  • 2015-11-30

[PHP][MSSQL]PHP連結SQL Server(MSSQL)的方法與測試連線

在想題目時,在懊惱要寫什麼,做了許多的聯想,有加解密、判斷空白字元、QRcode、Javascript、MySQL等等‧‧‧
那還有什麼相關的還沒寫到的呢...咦? MySQL...資料庫,突然想到先前有用PHP去連結SQL Server,那就決定今天用這個主題好了

寫此文時的環境說明:Apache2.4、PHP5.4
Step1. 下載必要檔案
Microsoft Drivers 3.0 for PHP for SQL Server

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

(若是SQL Server 2014 則不用下載安裝此套件)
Microsoft® SQL Server® 2012 Native Client
X86 封裝 (SqlCmdLnUtils.msi)

X64 封裝 (SqlCmdLnUtils.msi)
適用於 Visual Studio 2013 的 Visual C++ 可轉散發套件 (視Apache位元版本下載)
http://www.microsoft.com/zh-tw/download/details.aspx?id=40784

(註:MSVCP110.dll Missing問題)
Step2. 安裝Microsoft® SQL Server® 2012 Native Client
Step3. 執行Microsoft Drivers 3.0 for PHP for SQL Server
執行後,會產生SQLSRV30資料夾,內有php_pdo_sqlsrv與php_sqlsrv的dll檔
Step4. 複製dll檔到ext資料夾
觀看C:\WAMP\php5.4內檔案,是Thread Safe(php5ts.dll)還是Non Thread Safe(php5.dll)

此次示範是Thread Safe(php5ts.dll),因此複製php_pdo_sqlsrv_54_ts.dll及php_sqlsrv_54_ts.dll到C:\WAMP\php5.4\ext內
Step5. 設定php.ini
首先,複製一份php.ini-development,並重新命名為php.ini

接著編輯php.ini,設定extension_dir=為extension_dir = "C:/WAMP/php5.4/ext"

接著在增加以下兩行:

extension=php_sqlsrv_54_ts.dll
extension=php_pdo_sqlsrv_54_ts.dll
Step6. 重新啟動Apache Web Server
(此處要是80Port被SYSTEM佔去的話,請參考以下做法:

1. 找尋被占用的PID及程序名稱:netstat -nabo

2. 使用net stop http關閉http服務

3. 再使用sc config http start= disabled

4. 重新開機

5. 完成)
Step7. 建立測試連結用的PHP檔案(mssql_test)
如下程式內碼:

(參考連結:http://php.net/manual/en/function.sqlsrv-connect.php)
mssql_test.php
$connectionInfo處要改為自己的連線資訊

Example:

$connectionInfo=array("Database"=>"ithome_test","UID"=>"sa","PWD"=>"mssql_test","CharacterSet" => "UTF-8");
<?php
     header("Content-Type:text/html; charset=utf-8");
     $serverName="(IP位置或127.0.0.1-serverName)\SQLEXPRESS, (通訊埠Port)";
     $connectionInfo=array("Database"=>"資料庫名稱dbName","UID"=>"使用者名稱userName","PWD"=>"使用者密碼password","CharacterSet" => "UTF-8(編碼)");
     $conn=sqlsrv_connect($serverName,$connectionInfo);
         if($conn){
             echo "Success!!!";
         }else{
             echo "Error!!!<br />";
             die(print_r(sqlsrv_errors(),true));
         }            
?>

接著開啟瀏覽器http://localhost/mssql_test.php
要是成功會顯示「Success!!!」

要是失敗會顯示「Error!!!」及錯誤訊息