PHP使用SQLSRV連結MS SQL Server設定教學

11 月 5, 2015 | | 0 comments

這邊使用的是Windows主機安裝Xampp架設的Web Server環境,然而在其他的系統沒有嘗試使用過。

php sqlsrv安裝

  1. 首先安裝好xampp。這邊使用的版本為PHP 5.6.15。若想知道自己的php版本可以使用以下php函數方式查看。

    <?php
        phpinfo();
    ?>

{googleads center}
  1. 再來我們需要下載微軟的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了。 

  2. 使用解壓縮軟體,或使直接執行下載下了的SQLSRV32.EXE檔案,把與你php版本對應的.dll,這邊是使用php_sqlsrv_56_ts.dllphp_pdo_sqlsrv_56_ts.dll,放入C:xamppphpext

  3. 開啟C:xamppphpphp.ini

    在最底下加入這兩行,儲存檔案

    extension=php_sqlsrv_56_ts.dll
    extension=php_pdo_sqlsrv_56_ts.dll

  4. 這時可以檢查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

  1. 接下來就是mssql的連線,這邊我使用另一台主機做測試,也就是遠端方式,不用localhost。

    在遠端的主機上安裝好mssql server 2008 r2 這個版本。

  2. 接下來可以建立一個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