匯出 (0) 列印
全部展開

如何:使用 PHP 連接到 Windows Azure SQL Database

更新日期: 2013年12月

從 1.1 版開始,您可以使用 PHP 和 SQL Server Driver for PHP 連接到 Microsoft Microsoft Azure SQL Database。此主題說明如何在 Windows Azure Web CGI 角色內建立連接到 Microsoft Azure SQL Database 的 PHP 應用程式。依照 SQL Server Driver for PHP 文件集的使用者入門一節中的步驟執行,讓您的伺服器準備好使用 PHP 和 SQL Server 進行開發。您可以從 Microsoft 下載中心網站下載 SQL Server Driver for PHP。如需有關 SQL Server Driver for PHP 的詳細資訊,請參閱 MSDN 上的 SQL Server Driver for PHP 文件集。

note附註
當開啟與 Azure SQL 資料庫 的連接時,請將連接逾時設定為 30 秒。

建立 Windows Azure 應用程式

  1. 在 Visual Studio 中的 [檔案] 功能表上,按一下 [新增],然後選取 [專案]

    note附註
    您必須以系統管理員身分執行 Visual Studio,才能使用 Windows Azure Development Fabric。

  2. [加入新的專案] 對話方塊的 [專案類型] 清單中,針對 Visual C# 或 Visual Basic 選取 [雲端服務]

  3. 在 [範本] 窗格中,選取 [Windows Azure 雲端服務]。

  4. 輸入 PHPCGIExample 做為 [名稱],然後按一下 [確定]

  5. [新的雲端服務專案] 對話方塊中,將 [CGI Web 角色] 加入至 [雲端服務方案] 窗格,然後按一下 [確定]

  6. 在您的 Web 角色專案中建立新的 PHP 資料夾,並且從 PHP 安裝資料夾複製檔案,例如將 c:\program files\PHP 複製到您專案中新的 PHP 資料夾。PHP 執行階段二進位檔必須是部署的一部分。

  7. [方案總管] 中,以滑鼠右鍵按一下 [WebCgiRole] 專案,指向 [加入],然後按一下 [現有項目]。瀏覽並將 [php-cgi.exe] 加入至您的 Web 角色專案。

  8. [php-cgi.exe][屬性] 窗格中,將 [建置動作] 設定為 [內容] 以及 [複製到輸出目錄] 設定為 [永遠複製]

建立 PHP 應用程式

  1. 編輯 web.config 檔以設定您的 FastCGI 處理常式。在 <system.webServer> 節點下尋找 <handlers> 區段,並加入下列內容:

    <add name="PHP_FastCGI"
         verb="*"
         path="*.php"
         scriptProcessor="%RoleRoot%\approot\php-cgi.exe"
         modules="FastCgiModule"
         resourceType="Unspecified" />
    
  2. 編輯 web.roleconfig 檔,確認 <fastCgi> 區段包含下列設定:

    <application fullPath="%RoleRoot%\approot\php-cgi.exe"/>
    
  3. [方案總管] 中,以滑鼠右鍵按一下 [WebCgiRole] 專案,指向 [加入],然後按一下 [新增項目]

  4. [加入新項目] 對話方塊中,從 [範本] 窗格選取 [文字檔]。輸入 PHPData.php 做為 [名稱],然後按一下 [加入]

  5. [PHPData.php][屬性] 窗格中,將 [建置動作] 設定為 [內容] 以及 [複製到輸出目錄] 設定為 [永遠複製]

  6. [方案總管] 中,以滑鼠右鍵按一下 [WebCgiRole] 專案,然後選取 [屬性]。在 [屬性] 視窗中選取 [Web]。在 [起始動作] 窗格中按一下 [指定頁],並且輸入 PHPData.php

  7. [PHPData.php] 中,貼上下列程式碼:

    
    <?php
    
       $serverName = "tcp:ProvideServerName.database.windows.net,1433";
       $userName = 'ProvideUserName@ProvideServerName';
       $userPassword = 'ProvidePassword';
       $dbName = "TestDB";
       $table = "tablePHP";
      
       $connectionInfo = array("Database"=>$dbName, "UID"=>$userName, "PWD"=>$userPassword, "MultipleActiveResultSets"=>true);
    
       sqlsrv_configure('WarningsReturnAsErrors', 0);
       $conn = sqlsrv_connect( $serverName, $connectionInfo);
       if($conn === false)
       {
         FatalError("Failed to connect...");
       }
    
       CreateTable($conn, $table, "Col1 int primary key, Col2 varchar(20)");
    
        
       $tsql = "INSERT INTO [$table] (Col1, Col2) VALUES (1, 'string1'), (2, 'string2')";
       $stmt = sqlsrv_query($conn, $tsql);
       if ($stmt === false)
       {
         FatalError("Failed to insert data into test table: ".$tsql);
       }
       sqlsrv_free_stmt($stmt);
    
       $tsql = "SELECT Col1, Col2 FROM [$table]";
       $stmt = sqlsrv_query($conn, $tsql);
       if ($stmt === false)
       {
         FatalError("Failed to query test table: ".$tsql);
       }
       else
       {
          while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_NUMERIC))
          {
             echo "Col1: ".$row[0]."\n";
             echo "Col2: ".$row[1]."\n";
          }
                                    
          sqlsrv_free_stmt($stmt);
       }
    
       sqlsrv_close($conn);
    
    
    function CreateTable($conn, $tableName, $dataType)
    {
       $sql = "CREATE TABLE [$tableName] ($dataType)";
       DropTable($conn,$tableName);
       $stmt = sqlsrv_query($conn, $sql);
       if ($stmt === false)
       {
          FatalError("Failed to create test table: ".$sql);
       }
       sqlsrv_free_stmt($stmt);
    }
    
    
    function DropTable($conn, $tableName)
    {
        $stmt = sqlsrv_query($conn, "DROP TABLE [$tableName]");
        if ($stmt === false)
        {
        }
        else
        {
          sqlsrv_free_stmt($stmt);
        }
    }
    
    function FatalError($errorMsg)
    {
        Handle_Errors();
        die($errorMsg."\n");
    }
    
    
    function Handle_Errors()
    {
        $errors = sqlsrv_errors(SQLSRV_ERR_ERRORS);
        $count = count($errors);
        if($count == 0)
        {
           $errors = sqlsrv_errors(SQLSRV_ERR_ALL);
           $count = count($errors);
        }
        if($count > 0)
        {
          for($i = 0; $i < $count; $i++)
          {
             echo $errors[$i]['message']."\n";
          }
        }
    }
    
    ?>
    
  8. F5 執行方案。

另請參閱

社群新增項目

顯示:
© 2014 Microsoft