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»:
  3. Descomentar o agregar las lineas en el módulo extensiones dinámicas:
  4. Reiniciar Apache y verificar que la extensión haya sido reconocida  desde phpinfo():

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:

6 Respuestas a “Como configurar PHP para acceder a bases de datos SQL Server”
  1. Jose Erick Leon 6 Sep 2019
    Reply

    Estoy por configurar solo que al instalar el Driver ODBC me manda un error, ya que no tiene un dll, he buscado algunos dll que podrian ser los posibles pero no he dado con el correcto, si alguien pudiera ayudarme con este detalle, de ante mano muchas gracias/saludos.

Dejar una Respuesta