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:

12 Respuestas a “Como configurar PHP para acceder a bases de datos SQL Server”
  1. Jorge N. 25 Oct 2020
    Reply

    Esta página fue hecha cuando la versión vigente de PHP era la 5, por eso los archivos tienen esos nombres. Cuando se trata de versiones posteriores de PHP hay que buscar los dll para esas versiones y los textos insertados cambiarán según los dll

  2. Tengo un problema y quisiera su ayuda. Tengo una base de datos en SQL server la cual consulto para luego guardar en otra base de datos SQL server. Ya he realizado muchas pruebas y no logro que me inserte los registros de la consulta. Por favor quién puede ayudarme.

  3. 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