Foros del Web » Programando para Internet » PHP »

Configurar PHP 5.3.0 con Sql Server

Estas en el tema de Configurar PHP 5.3.0 con Sql Server en el foro de PHP en Foros del Web. Buenos días, colegas. Este post como una autorespuesta para este hilo que hice hace un par de días. Mil problemas para conectar PHP con Sql ...
  #1 (permalink)  
Antiguo 28/08/2013, 09:21
 
Fecha de Ingreso: junio-2012
Ubicación: Venezuela
Mensajes: 68
Antigüedad: 12 años, 6 meses
Puntos: 6
Información Configurar PHP 5.3.0 con Sql Server

Buenos días, colegas. Este post como una autorespuesta para este hilo que hice hace un par de días.

Mil problemas para conectar PHP con Sql Server

Resulta que ya pude realizar la conexión. El problema era que necesitaba conectar una versión de php 5.3.0 o superior con SQL Server. Hay mucha info en la web de cómo hacerlo pero solo con la versión 5.2.6 del php. Yo necesitaba la 5.3.0 ya que hay métodos mágicos como el __invoke() que solo funcionan a partir de esta versión.

Después de tanto investigar, romperme el coco y hacer algunas pruebas logré hacerlo. Aunque solo con la versión 5.3.0 porque con la versión 5.4.3 no pude (de hecho estoy casi seguro que no se puede)... Lo que hice fue lo siguiente.

Esto está probado solo con el paquete WampServer, problablemente sirva también con el apache y el php por separado.

La versión del php que se debe instalar en el wampserver es la 5.3.0. La versión del WampServer es la 2.2 y la versión del apache es la 2.2.22.

Hay unos paquetes de librerías que proporciona Microsoft que necesitamos. estos se pueden descargar de esta página.

DLL de Microsoft
*Descargar SQLSRV20.EXE y no la SQLSRV30.EXE

Deben extraer los ddl en una carpeta cualquiera y copiar los siguientes en la carpeta ext del php

php_sqlsrv_53_ts_vc6.ddl
php_pdo_sqlsrv_53_ts_vc6.ddl

*Recuerden que estas librerías son para la versión segura de PHP 5.3.0, hay otras versiones de estas librerías, pero probé con la php_sqlsrv_54_ts.ddl php_pdo_sqlsrv_54_ts.ddl para el PHP 5.4.3 y no me funcionó.

También recomiendo colocar las siguientes librerías en la misma carpeta

php_pdo.dll

php_mssql.dll

php_pdo_mssql.dll

También deben incluir estas librerías en el php.ini de la versión del php que se está usando, o sea la 5.3.0. Deben tener habilitadas todas estas extensiones recien agregadas... o sea debe quedar así:

Código:
extension=php_pdo.dll

extension=php_mssql.dll

extension=php_pdo_mssql.dll

;extension=php_sqlsrv_53_ts.dll
;extension=php_pdo_sqlsrv_53_ts.dll

;extension=php_pdo_sqlsrv_53_ts_vc9.dll
;extension=php_sqlsrv_53_ts_vc9.dll

extension=php_pdo_sqlsrv_53_ts_vc6.dll
extension=php_sqlsrv_53_ts_vc6.dll

[sqlsrv]
sqlsrv.LoadSubsystems=-1
sqlsrv.LogServerity=-1
sqlsrv.WarningsReturnsAsErrors=0
Las lineas que están antecedidas por un ; es porque están en comentario, coloco esto para que vean que intenté con otras versiones de las librerías de Microsoft. Solo me sirvieron las que no están comentadas.

Si se fijan también he agregado unas instrucciones para configurar algunos parámetros de la librería, es lo que está a partir del [sqlsrv].

Una vez configurado guardan el archivo. Ahora podrán ver estas nuevas líneas en el menú gráfico de las extensiones mediante el icono del wampserver, deben tildar cada una de las extensiones que acaban de agregar. Cada vez que tilden el servicio se va a reuniciar, sin embargo reinicien cuando terminen de tildar las extensiones.

*Deben asegurarse que están modificando el php.ini correcto (esto por si tienen otras versiones instaladas en el mismo WampServer.

También recomiendo colocar esta librería en C:\Windows\System32:

ntwdblib.dll

Y listo, ya debería estar configurado correctamente...

Para comprobar que efectivamente se estén leyendo las librerías usen un archivo con la función phpinfo(); para ver los detalles...

Una manera fácil de comprobarlo es buscando con el buscador del navegador (Ctrl+F) y buscar "sqlsrv". No estoy seguro pero deberían haber 10 resultados (al menos en mi caso es así). Y deben estar las secciones "pdo_sqlsrv", "sqlsrv", la seeción "PDO"debe estar así: mysql, odbc, sqlite, sqlsrv. Ademas de los otros resultados, pero si aparecen al menos estas secciones y estos resultados probablemente esté todo bien.

Ok, si todo va bien ya podremos realizar las conexión, pero aun queda un detalle, realmente lo que hemos hecho es cambiar las librerías para la conexión, esto quiere decir que hemos configurado el php para usar una nueva extensión de Sql Sever. Como todos sabemos al desarrollar la extensión es mssql_ pero ahora no es así, ahora es sqlsrv_. Un error que estaba cometiendo yo al momento de probar, ya con todo bien configurado, era usar mssql_connect() y me daba error. Y resulta que ahora es sqlsrv_connect.

Viene siendo prácticamente lo mismo... pero como todos saben Microsoft siempre complicando las cosas... Para mas información acerca de las funciones que se tienen que usar ahora visitar

http://php.net/manual/en/book.sqlsrv.php

Yo use este pequeño script para probar la conexión a un servidor de base de datos externo y funcionó correctamente:

Código PHP:
<?php
$serverName 
"Servidor";
    
$connectionInfo = array( "Database"=>"BaseDeDatos","UID"=>"Usuario","PWD"=>"Contraseña");
     
    
$conn sqlsrv_connect$serverName$connectionInfo);
    if(
$conn){
        echo(
'Conectado');
    }else{
        echo(
'No se pudo conectar<br/>');
        die( 
print_rsqlsrv_errors(), true));
    } 
   
$query sqlsrv_query("Select * from motivos");
   echo 
$query;
?>
Y bueno eso es todo. Cualquier cosa pueden escribir haber si les puedo echar una mano.

Saludos y espero que les haya servido.
  #2 (permalink)  
Antiguo 08/11/2013, 12:42
 
Fecha de Ingreso: noviembre-2013
Ubicación: Mexico
Mensajes: 32
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Configurar PHP 5.3.0 con Sql Server

Hola bro.. Mira hice el procedimiento tal como lo explicaste, ya me conecta pero a la hora de arrojarme resultados de la tabla me sale este error:

Conectado
Warning: sqlsrv_query() expects at least 2 parameters, 1 given in C:\wamp\www\ejemplosql\index.php on line 12

el código vendría siendo el mismo que el tuyo, te lo dejo:

<?php
$serverName = "10.24.142.140\RICHSERVER";
$connectionInfo = array( "Database"=>"directorio","UID"=>"aa","PWD"=>"sas") ;

$conn = sqlsrv_connect( $serverName, $connectionInfo);
if($conn){
echo('Conectado');
}else{
echo('No se pudo conectar<br/>');
die( print_r( sqlsrv_errors(), true));
}
$query = sqlsrv_query("Select Nombre_completo from PERSONAS");
echo $query;
?>

Por favor ayudame :/ me urge un poco para un proyecto!
  #3 (permalink)  
Antiguo 08/11/2013, 12:45
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 5 meses
Puntos: 793
Respuesta: Configurar PHP 5.3.0 con Sql Server

Tienes 2 parámetros obligatorios en sqlsrv_query y sólo le estás pasando uno.

Código PHP:
Ver original
  1. $query = sqlsrv_query($conn, "Select Nombre_completo from PERSONAS");

http://php.net/manual/en/function.sqlsrv-query.php
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #4 (permalink)  
Antiguo 08/11/2013, 12:51
 
Fecha de Ingreso: junio-2012
Ubicación: Venezuela
Mensajes: 68
Antigüedad: 12 años, 6 meses
Puntos: 6
Mensaje Respuesta: Configurar PHP 5.3.0 con Sql Server

Cita:
Iniciado por Fozzie12 Ver Mensaje
Hola bro.. Mira hice el procedimiento tal como lo explicaste, ya me conecta pero a la hora de arrojarme resultados de la tabla me sale este error:

Conectado
Warning: sqlsrv_query() expects at least 2 parameters, 1 given in C:\wamp\www\ejemplosql\index.php on line 12

el código vendría siendo el mismo que el tuyo, te lo dejo:

<?php
$serverName = "10.24.142.140\RICHSERVER";
$connectionInfo = array( "Database"=>"directorio","UID"=>"aa","PWD"=>"sas") ;

$conn = sqlsrv_connect( $serverName, $connectionInfo);
if($conn){
echo('Conectado');
}else{
echo('No se pudo conectar<br/>');
die( print_r( sqlsrv_errors(), true));
}
$query = sqlsrv_query("Select Nombre_completo from PERSONAS");
echo $query;
?>

Por favor ayudame :/ me urge un poco para un proyecto!
Hola, hay un detalle con estas nuevas extensiones de php, que algunas cambian un poco en su implementación, debes documentarte bien cuales son los parámetros que recibe ahora sqlsrv_query y los demas métodos.

En este caso sqlsrv_query recibe dos parámetros 1: la consulta (el string sql). Y además la conexión.. tu línea 11 deberia ser

Código PHP:
$query sqlsrv_query($conn,"Select Nombre_completo from PERSONAS",array(), array("Scrollable"=> SQLSRV_CURSOR_KEYSET)); 
Docuementate cuales son los parámetros que ahora recibe sqlsrv_query..

Así como te indico deberia funcionar, pero te invito a que te documentes un poco sobre esos parámetros que antes no hacían falta

Saludos
__________________
Un mago nunca llega tarde ni temprano, solo en el momento indicado.- Gandalf el Gris
  #5 (permalink)  
Antiguo 08/11/2013, 12:51
 
Fecha de Ingreso: noviembre-2013
Ubicación: Mexico
Mensajes: 32
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Configurar PHP 5.3.0 con Sql Server

Muchas gracias, ya no me marca el error. Pero ahora hago modificaciones en la consulta y solo me aparece esto:

ConectadoResource id #3

es el único mensaje que aparece aunque lo modifique.

Perdón por mi ignorancia u.u
  #6 (permalink)  
Antiguo 08/11/2013, 12:57
 
Fecha de Ingreso: junio-2012
Ubicación: Venezuela
Mensajes: 68
Antigüedad: 12 años, 6 meses
Puntos: 6
Respuesta: Configurar PHP 5.3.0 con Sql Server

Cita:
Iniciado por Fozzie12 Ver Mensaje
Muchas gracias, ya no me marca el error. Pero ahora hago modificaciones en la consulta y solo me aparece esto:

ConectadoResource id #3

es el único mensaje que aparece aunque lo modifique.

Perdón por mi ignorancia u.u
es que esto está malo
Código PHP:
$query sqlsrv_query("Select Nombre_completo from PERSONAS"); 
echo 
$query
la variable $query debes transformala en un arreglo. y luego mostrarla. Documentate de como convertir un SELECT sql en un arreglo php y mostrarlo por pantalla. De eso hay miles de documentación en la web. Como obtenerlo y como mostrarlo por pantalla...

Pero bueno el caso es que ahí tienes el error...

Saludos..
__________________
Un mago nunca llega tarde ni temprano, solo en el momento indicado.- Gandalf el Gris
  #7 (permalink)  
Antiguo 08/11/2013, 13:01
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 5 meses
Puntos: 793
Respuesta: Configurar PHP 5.3.0 con Sql Server

Revisa el manual PHP, te dejo este ejemplo muy básico:

Código PHP:
Ver original
  1. <?php
  2. $serverName = "serverName\instanceName";
  3. $connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
  4. $conn = sqlsrv_connect( $serverName, $connectionInfo );
  5. if( $conn === false ) {
  6.     die( print_r( sqlsrv_errors(), true));
  7. }
  8.  
  9. $sql = "SELECT FirstName, LastName FROM SomeTable";
  10. $stmt = sqlsrv_query( $conn, $sql );
  11. if( $stmt === false) {
  12.     die( print_r( sqlsrv_errors(), true) );
  13. }
  14.  
  15. while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
  16.       echo $row['LastName'].", ".$row['FirstName']."<br />";
  17. }
  18.  
  19. sqlsrv_free_stmt( $stmt);

http://www.php.net/manual/es/functio...etch-array.php
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #8 (permalink)  
Antiguo 13/11/2014, 14:22
 
Fecha de Ingreso: diciembre-2010
Mensajes: 24
Antigüedad: 14 años
Puntos: 0
Respuesta: Configurar PHP 5.3.0 con Sql Server

No me reconoce en el phpinfo () no se visuliza u.u!
  #9 (permalink)  
Antiguo 13/11/2014, 20:51
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 10 meses
Puntos: 288
Respuesta: Configurar PHP 5.3.0 con Sql Server

No entiendo, aca en este post si seguis los pasos al pie de la letra lo podes configurar el sqlserver tanto en php 5.2 y php 5.3 sin problemas
http://www.forosdelweb.com/f142/apor...window-937080/

yo tengo en pc appServ con php 5.2
y wamp cpn php 5.3
y en ambos pude configurarlo sin problemas siguiendo el Aporte

el único problema es NO seguir al pie de la letra las instrucciones
y si, me costaron unas lágrimas pero finalmente lo logré
  #10 (permalink)  
Antiguo 11/03/2015, 17:00
 
Fecha de Ingreso: septiembre-2008
Mensajes: 2
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Configurar PHP 5.3.0 con Sql Server

Despues de un día entero peleando con esto, tratando de hacer lo que esta arriba, me funciono de una manera mas facil.

Simplemente pegue el archivo php_sqlsrv_53_ts.dll en la carpeta ext de php y luego en el php.ini en la seccion de extension agregue esto:

extension=php_sqlsrv_53_ts.dll

se reinicia el apache y listo.

Tengo wamp server apache 2.2.21, php 5.3.1 windows 7 de 64 bits.

Saludos

Etiquetas: php+sqlserver, wampserver
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 06:07.