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
- Parar el servicio Apache en «xampp-control»:
- Editar el archivo «php.ini»:
- Descomentar o agregar las lineas en el módulo extensiones dinámicas:
- 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:
Aqui les dejo compañeros la url de donde se puede obtener los drivers que necesitan, segun su version de php y/o sql server:
https://docs.microsoft.com/es-es/sql/connect/php/system-requirements-for-the-php-sql-driver?view=sql-server-2017
¿pudiste resolverlo? tengo el mismo problema.
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
No me funciona sigue saliendo mysql y no sqlsvr, la version del xap es 7.2.28 la version del php nose
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.
Cual es el error?
Tienes idea de como se hace desde mac?
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.
gracias
Funciona a la primera, muchas gracias!!!
Muchisimas gracias. Me funcionó a la primera.
Me funciono a la primera mil gracias. Saludos desde El Salvador.