(0) exportieren Drucken
Alle erweitern

Vorgehensweise: Herstellen einer Verbindung mit der Windows Azure SQL-Datenbank über PHP

Letzte Aktualisierung: Dezember 2013

Sie können mithilfe von PHP und SQL Server-Treiber für PHP (ab Version 1.1) eine Verbindung mit Microsoft Microsoft Azure SQL-Datenbank herstellen. In diesem Thema wird beschrieben, wie eine PHP-Anwendung in einer Windows Azure-CGI-Webrolle erstellt wird, die eine Verbindung mit Microsoft Azure SQL-Datenbank herstellt. Führen Sie die Schritte im Abschnitt Erste Schritte der SQL Server-Treiber für PHP-Dokumentation aus, um den Server für die Entwicklung mit PHP und SQL Server vorzubereiten. Sie können den SQL Server-Treiber für PHP von der Microsoft Download Center-Website herunterladen. Weitere Informationen über den SQL Server-Treiber für PHP finden Sie auf der MSDN-Website in der Dokumentation zum SQL Server-Treiber für PHP.

noteHinweis
Legen Sie das Verbindungstimeout beim Öffnen einer Verbindung mit einer Azure SQL-Datenbank auf 30 Sekunden fest.

Erstellen der Windows Azure-Anwendung

  1. Klicken Sie in Visual Studio im Menü Datei auf Neu, und wählen Sie dann Projekt aus.

    noteHinweis
    Sie müssen Visual Studio als Administrator ausführen, um die Windows Azure-Entwicklungsstruktur verwenden zu können.

  2. Wählen Sie im Dialogfeld Neues Projekt hinzufügen in der Liste Projekttypen die Option Cloud-Dienst für Visual C# oder Visual Basic aus.

  3. Wählen Sie im Bereich "Vorlagen" den Windows Azure-Cloud-Dienst aus.

  4. Geben Sie PHPCGIExample in das Feld Name ein, und klicken Sie auf OK.

  5. Fügen Sie im Dialogfeld Neues Projekt für den Cloud-Dienst dem Bereich Projektmappe für Cloud-Dienst eine CGI-Webrolle hinzu, und klicken Sie dann auf OK.

  6. Erstellen Sie einen neuen Ordner "PHP" im Webrollenprojekt, und kopieren Sie die Dateien vom PHP-Installationsordner (z. B. "c:\Programme\PHP") in den neuen Ordner "PHP" im Projekt. Die PHP-Laufzeitbinärdateien müssen Teil der Bereitstellung sein.

  7. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt WebCgiRole, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Vorhandenes Element. Suchen Sie nach der Datei php-cgi.exe, und fügen Sie sie dem Webrollenprojekt hinzu.

  8. Legen Sie im Bereich Eigenschaften für php-cgi.exe die Option Buildvorgang auf Inhalt und In Ausgabeverzeichnis kopieren auf Immer kopieren fest.

Erstellen der PHP-Anwendung

  1. Bearbeiten Sie die Datei web.config, um den FastCGI-Handler zu konfigurieren. Suchen Sie nach dem <handlers>-Abschnitt unter dem <system.webServer>-Knoten, und fügen Sie Folgendes hinzu:

    <add name="PHP_FastCGI"
         verb="*"
         path="*.php"
         scriptProcessor="%RoleRoot%\approot\php-cgi.exe"
         modules="FastCgiModule"
         resourceType="Unspecified" />
    
  2. Bearbeiten Sie die web.roleconfig-Datei, um sicherzustellen, dass der <fastCgi>-Abschnitt die folgende Einstellung enthält:

    <application fullPath="%RoleRoot%\approot\php-cgi.exe"/>
    
  3. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt WebCgiRole, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neues Element.

  4. Wählen Sie im Dialogfeld Neues Element hinzufügen im Bereich Vorlagen die Option Textdatei aus. Geben Sie PHPData.php in das Feld Name ein, und klicken Sie dann auf Hinzufügen.

  5. Legen Sie im Bereich Eigenschaften für PHPData.php die Option Buildvorgang auf Inhalt und In Ausgabeverzeichnis kopieren auf Immer kopieren fest.

  6. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt WebCgiRole, und wählen Sie Eigenschaften aus. Wählen Sie im Eigenschaftenfenster Web aus. Klicken Sie im Bereich Startaktion auf Bestimmte Seite, und geben Sie PHPData.php ein.

  7. Fügen Sie in PHPData.php den folgenden Code ein:

    
    <?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. Drücken Sie F5, um die Projektmappe auszuführen.

Siehe auch

Community-Beiträge

Anzeigen:
© 2014 Microsoft