Como configurar PHP para acceder a bases de datos SQL Server

Si realizamos las configuraciones usuales nos saldrá un error de PHP con SQL “Conexión no se pudo establecer con el SQL Server.” es la comunicación por primera vez, sigue éstos pasos para realizar correctamente una conexión desde PHP hacia una base de datos SQL Server.

Para ésta prueba se utilizó:

  • PHP Version 5.6.23
  • Apache 2.4.17
  • XAMPP Control Panel Version 3.2.2

Se requiere los dos archivos de librerías, dependiendo de la versión de tu PHP, para mi caso:

  • Descargar SQLSRV32.exe (copiar: php_sqlsrv_56_ts.dll, php_pdo_sqlsrv_56_ts.dll) en la ruta: C:\XAMPP\PHP\EXT\
  • Otro dato importante es instalar  SQL Server ODBC Driver 11 for SQL Server, según versión 32bit o 64bit de S.O. Windows (Actualizado: Febrero 2017)

Pasos

  1. Parar el servicio Apache en “xampp-control”,
  2. Editar el archivo “php.ini”,

    Abrir archivo php.ini desde la configuracion de XAMPP
  3. Descomentar o agregar las lineas en el módulo extensiones dinámicas:

    Lineas de configuración de php.ini para sql server
  4. Reiniciar Apache y verificar que la extensión haya sido reconocida:
    Extensión visible desde phpinfo()

    También tiene su propia sección pdo_sqlserver

Código de Ejemplo

<?php
    //serverName\instanceName, portNumber (por defecto es 1433)
    $serverName = "192.168.1.2\\MSSQLSERVER, 1433"; 

    $connectionInfo = array( "Database"=>"BaseDatosPrueba", "UID"=>"sa", "PWD"=>"123456");
    $conn = sqlsrv_connect( $serverName, $connectionInfo);

    if( $conn ) {
        echo "Conexión establecida.<br />";
    }else{
        echo "Conexión no se pudo establecer.<br />";
        die( print_r( sqlsrv_errors(), true));
    }

    $query = "SELECT * FROM tableTest";
    $res =  sqlsrv_query($conn, $query, array(), array("Scrollable" => SQLSRV_CURSOR_KEYSET ));
    if (0 !== sqlsrv_num_rows($res)){
        while ($fila = sqlsrv_fetch_array($res)) {
            echo "Personal: ".utf8_encode($fila['nombres'])." "
                .utf8_encode($fila['ap_pat'])." "
                .utf8_encode($fila['ap_mat']);
            echo "<br>";
        }
    }
?>

 

Tengo que  aclarar deberán usar su propia configuración para conectarse como el número de  IP, el usuario y la contraseña de SQL Server. Además para éste caso solamente la base de datos “BaseDatosPrueba”, contiene una tabla “TableTest” con los campos “nombres(varchar), ap_pat (varchar), ap_mat (varchar)”, llenar algunos registros para su prueba.

Recomendaciones:

En caso de que la versión de PHP es diferente, por ejemplo la versión 5.5 -> necesitarías cambiar el nombre al que invocas en el PHP.INI y obviamente los archivos en la carpeta correspondiente: php_sqlsrv_55_ts.dll, php_pdo_sqlsrv_55_ts.dll, puedes encontrar mayor información en el MSDN de Microsoft, referencias al pie del artículo.

Referencias:

 

Dejar una Respuesta