Exportar (0) Imprimir
Expandir todo

Conectar con Base de datos SQL de Windows Azure mediante PHP

Actualizado: diciembre de 2013

Puede conectarse a Microsoft Base de datos SQL de Microsoft Azure con PHP y Controlador de SQL Server para PHP a partir de la versión 1.1. En este tema se muestra la forma de crear una aplicación PHP dentro de un rol CGI Web de Windows Azure que se conecta a Base de datos SQL de Microsoft Azure. Siga los pasos descritos en la sección Introducción de la documentación de Controlador de SQL Server para PHP para preparar el servidor para el desarrollo con PHP y SQL Server. Puede descargar el Controlador de SQL Server para PHP desde el Microsoft sitio Web del Centro de descarga. Para obtener más información acerca de Controlador de SQL Server para PHP, vea la documentación del controlador de SQL Server para PHP en MSDN.

noteNota
Al abrir una conexión con Base de datos SQL de Azure, establezca el tiempo de espera de la conexión en 30 segundos.

Crear la aplicación Windows Azure

  1. En Visual Studio, en el menú Archivo, haga clic en Nuevo y seleccione Proyecto.

    noteNota
    Debe ejecutar Visual Studio como administrador para poder utilizar el entramado de desarrollo de Windows Azure.

  2. En el cuadro de diálogo Agregar nuevo proyecto, en la lista Tipos de proyecto, seleccione Servicio en la nube para Visual C# o Visual Basic.

  3. En el panel Plantillas, seleccione Servicio de nube de Windows Azure.

  4. Escriba PHPCGIExample como Nombre y, a continuación, haga clic en Aceptar.

  5. En el cuadro de diálogo Nuevo proyecto de servicio de nube, agregue un rol de web de CGI al panel Solución de servicio de nube y, a continuación, haga clic en Aceptar.

  6. Cree una nueva carpeta PHP en su proyecto de rol web y copie los archivos de la carpeta de instalación de PHP, como c:\archivos de programa\PHP, a su nueva carpeta PHP del proyecto. Los binarios PHP en tiempo de ejecución deben formar parte de la implementación.

  7. En el Explorador de soluciones, haga clic con el botón secundario en WebCgiRole, seleccione Agregar y, a continuación, haga clic en Elemento existente. Examine y agregue php-cgi.exe a su proyecto de rol web.

  8. En el panel Propiedades para php-cgi.exe, establezca Acción de compilación en Contenido y Copiar en el directorio de salida en Copiar siempre.

Crear la aplicación PHP

  1. Edite el archivo web.config para configurar su controlador FastCGI. Busque la sección <handlers> bajo el nodo <system.webServer> y agregue lo siguiente:

    <add name="PHP_FastCGI"
         verb="*"
         path="*.php"
         scriptProcessor="%RoleRoot%\approot\php-cgi.exe"
         modules="FastCgiModule"
         resourceType="Unspecified" />
    
  2. Edite el archivo web.roleconfig para asegurarse de que la sección <fastCgi> tiene el siguiente valor:

    <application fullPath="%RoleRoot%\approot\php-cgi.exe"/>
    
  3. En el Explorador de soluciones, haga clic con el botón secundario en WebCgiRole, seleccione Agregar y, a continuación, haga clic en Nuevo elemento.

  4. En el cuadro de diálogo Agregar nuevo elemento, seleccione Archivo de texto en el panel Plantillas. Escriba PHPData.php como Nombre y, a continuación, haga clic en Agregar.

  5. En el panel Propiedades para PHPData.php, establezca Acción de compilación en Contenido y Copiar en el directorio de salida en Copiar siempre.

  6. En el Explorador de soluciones, haga clic con el botón secundario en el proyecto WebCgiRole y seleccione Propiedades. En la ventana Propiedades, seleccione Web. En el panel Acción de inicio, haga clic en Página específica y escriba PHPData.php.

  7. En PHPData.php, pegue el código siguiente:

    
    <?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. Presione F5 para ejecutar la solución.

Vea también

Adiciones de comunidad

Mostrar:
© 2014 Microsoft