Esporta (0) Stampa
Espandi tutto

Procedura: Connettersi a database SQL di Windows Azure tramite PHP

Aggiornamento: dicembre 2013

È possibile eseguire la connessione al database SQL di Microsoft Azure di Microsoft tramite PHP Driver SQL Server per PHP a partire dalla versione 1.1. In questo argomento viene illustrato come creare un'applicazione PHP all'interno di un ruolo CGI Web Windows Azure tramite cui viene eseguita la connessione al database SQL di Microsoft Azure. Seguire i passaggi descritti nella sezione Guida introduttiva della documentazione di Driver SQL Server per PHP per preparare il server per lo sviluppo con PHP e SQL Server. I Driver SQL Server per PHP possono essere scaricati dal Microsoft sito Web dell'Area download. Per ulteriori informazioni sui Driver SQL Server per PHP, vedere la documentazione relativa al driver SQL Server per PHP su MSDN.

noteNota
Quando si apre una connessione a un'istanza di database SQL di Azure, impostare il timeout di connessione su 30 secondi.

Creare l'applicazione di Windows Azure

  1. In Visual Studio scegliere Nuovo dal menu File, quindi selezionare Progetto.

    noteNota
    È necessario eseguire Visual Studio come amministratore per utilizzare l'infrastruttura di sviluppo di Windows Azure.

  2. Nell'elenco Tipi progetto della finestra di dialogo Aggiungi nuovo progetto selezionare Servizio cloud per Visual C# o Visual Basic.

  3. Nel riquadro Modelli selezionare Servizio cloud Windows Azure.

  4. Digitare PHPCGIExample nel campo Nome, quindi fare clic su OK.

  5. Nella finestra di dialogo Nuovo progetto di servizio cloud aggiungere un ruolo Web CGI nel riquadro Soluzione servizio cloud, quindi fare clic su OK.

  6. Creare una nuova cartella PHP nel progetto di ruolo Web e copiare i file dalla cartella di installazione PHP, ad esempio copiare c:\programmi\PHP nella nuova cartella PHP del progetto. I file binari PHP di runtime devono far parte della distribuzione.

  7. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto WebCgiRole, scegliere Aggiungi, quindi fare clic su Elemento esistente. Cercare e aggiungere php-cgi.exe al progetto di ruolo Web.

  8. Nel riquadro Proprietà per php-cgi.exe impostare Azione di compilazione su Contenuto e Copia nella directory di output su Copia sempre.

Creare l'applicazione PHP

  1. Modificare il file web.config per configurare il gestore FastCGI. Trovare la sezione <handlers> nel nodo <system.webServer> e aggiungere quanto segue:

    <add name="PHP_FastCGI"
         verb="*"
         path="*.php"
         scriptProcessor="%RoleRoot%\approot\php-cgi.exe"
         modules="FastCgiModule"
         resourceType="Unspecified" />
    
  2. Modificare il file web.roleconfig per assicurarsi che nella sezione <fastCgi> sia presente l'impostazione seguente:

    <application fullPath="%RoleRoot%\approot\php-cgi.exe"/>
    
  3. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto WebCgiRole, scegliere Aggiungi, quindi fare clic su Nuovo elemento.

  4. Nel riquadro Modelli della finestra di dialogo Aggiungi nuovo elemento selezionare File di testo. Digitare PHPData.php nel campo Nome, quindi fare clic su Aggiungi.

  5. Nel riquadro Proprietà per PHPData.php impostare Azione di compilazione su Contenuto e Copia nella directory di output su Copia sempre.

  6. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto WebCgiRole, quindi scegliere Proprietà. Nella finestra Proprietà selezionare Web. Nel riquadro Azione di avvio fare clic su Pagina specifica e digitare PHPData.php.

  7. In PHPData.php incollare il codice seguente:

    
    <?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. Premere F5 per eseguire la soluzione.

Vedere anche

Aggiunte alla community

Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft