エクスポート (0) 印刷
すべて展開

PHP を使用して Windows Azure SQL データベースに接続する方法

更新日: 2013年12月

Microsoft Microsoft Azure SQL データベースには、PHP および Version 1.1 以上の SQL Server Driver for PHP を使用して接続できます。 このトピックでは、Microsoft Azure SQL データベース に接続する Windows Azure Web CGI ロール内に PHP アプリケーションを作成する方法について説明します。 PHP と SQL Server を使った開発用にサーバーを準備するには、SQL Server Driver for PHP のドキュメントの「はじめに」セクションの手順に従ってください。 SQL Server Driver for PHP は Microsoft Download Center Web サイトからダウンロードできます。 SQL Server Driver for PHP,の詳細については、MSDN の「SQL Server Driver for PHP」ドキュメントを参照してください。

note
Azure SQL データベースへの接続を開く場合は、接続タイムアウトを 30 秒に設定します。

Windows Azure アプリケーションの作成

  1. Visual Studio で [ファイル] メニューの [新規作成] をクリックし、[プロジェクト] をクリックします。

    note
    Windows Azure 開発ファブリックを使用するには、管理者として Visual Studio を実行する必要があります。

  2. [新しいプロジェクトの追加] ダイアログ ボックスの [プロジェクトの種類] ボックスの一覧で、Visual C# または Visual Basic の [クラウド サービス] をクリックします。

  3. [テンプレート] ペインで、[Windows Azure クラウド サービス] をクリックします。

  4. 名前として「PHPCGIExample」を入力し、[OK] をクリックします。

  5. [新しいクラウド サービス プロジェクト] ダイアログ ボックスで、[クラウド サービス ソリューション] ペインに CGI Web ロールを追加し、[OK] をクリックします。

  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