Foros del Web » Programando para Internet » PHP »

Conectar PHP a SQL Server

Estas en el tema de Conectar PHP a SQL Server en el foro de PHP en Foros del Web. Buenas, mi consulta es ¿cómo puedo acceder a una base de datos en SQL Server desde una web en PHP? He visto la web: http://php.net/manual/es/function.sqlsrv-connect.php ...
  #1 (permalink)  
Antiguo 09/09/2014, 19:19
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 2 meses
Puntos: 3
Conectar PHP a SQL Server

Buenas, mi consulta es ¿cómo puedo acceder a una base de datos en SQL Server desde una web en PHP?

He visto la web: http://php.net/manual/es/function.sqlsrv-connect.php
Pero no tengo tanto acceso en el servidor web, por ejemplo a la carpeta del Apache para colocar la extensión DLL.... Solamente puedo entrar por FTP al servidor y colocar los archivos PHP que estoy desarrollando.

He probado muchos ejemplos de ineternet, pero ninguno funcionó.
Colo estos 2 ejemplos:

Código PHP:
$serverName "mi_ip/SQLEXPRESS";
$connectionInfo = array( "Database"=>"mibase""UID"=>"sa""PWD"=>"miclave");
$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));

Pero devuelve este error:
Fatal error: Call to undefined function sqlsrv_connect() in ............

Y otro código que ejecuté sin exito es el siguiente:

Código PHP:
    include("adodb5/adodb.inc.php");  
     
$conexion = &ADONewConnection("odbc_mssql");  
    
$datos "Driver={SQL Server};Server=mi_ip/SQLEXPRESS;Database=mibase;";  
    
$conexion->Connect($datos,'sa','miclave'); 
Y me devuelve 2 errores:
1) Strict standards: Only variables should be assigned by reference in ......
2) Warning: odbc_connect(): SQL error: [Microsoft][ODBC SQL Server Driver][DBNETLIB]No existe el servidor SQL Server o se ha denegado el acceso al mismo., SQL state 08001 in SQLConnect in ......

¿Pueden orientarme?

Desde el lado del servidor SQL están los puertos habilitados y todo correcto, y lo sé porque desde una aplicación de escritorio pude ingresar remotamente a la base de datos SQL Server... mi duda es como hacerlo con PHP (sabiendo que no puedo tocar el archivo PHP.INI por ejemplo)

Un saludo.
  #2 (permalink)  
Antiguo 09/09/2014, 21:18
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Conectar PHP a SQL Server

tené en cuenta que si el servidor tienen php 5.2.x se usa la funciona mssql_connect()
y si usa php 5.3 o 5.4 se usa sqlsrv_connect()
para el php 5.5 entiendo que aun no se puede conectar por que no exista la libreria, quizas ya exista no lo sé...

bueno, teniendo MUY en cuenta lo anterior segui MUY en detalle esta guia
http://www.forosdelweb.com/f142/apor...window-937080/

Tomate un tiempo el leer los detalles, la documentacion de php.net también si hace falta.
siguiendo esta guia yo pude conectar el sqlServer en php 5.2 y 5.3
te avierto que la coneccion con php 5.3 es mucho mas rigurosa
Hay unos links a la doc oficial de Microsoft, LEELO de punta a punta (esta en español)

te van a salir un par de lagirmas y mucha angustia la primera vez hasta que logres hacerlo funcionar. una vez que lo hagas documentá el paso a paso por que son tantas cosas que te vas a olvidar si lo querés hacer nuevamente

si se te dá por usar php 5.2 te puedo dar una mano , con la de 5.3 es mas dificil
  #3 (permalink)  
Antiguo 11/09/2014, 19:15
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 2 meses
Puntos: 3
Respuesta: Conectar PHP a SQL Server

Hola Patriarka,

Desde ya muchas gracias por la respuesta. Entre ayer y hoy he intentado conectarme, y no tuve buenos resultados.

Estoy haciendo la prueba de conectarme desde una PC con WampServer 2.4 (el cual tiene PHP 5.4.16) a otra PC de otro domicilio con el servidor SQL SERVER (la cual ya tiene el puerto abierto y todo listo para que se puedan conectar, ya hice la prueba con otra aplicación de escritorio).

He intentado de todo, hice todo tipo de pruebas, y nada. Siempre obtento errores de PHP, como por ejemplo: Fatal error: Uncaught exception .... y así también con otros errores.

1) Tiene algo que ver que estoy usando PHP 5.4.16 ??

2) A pesar que no me anduvo, supongamos que logro conectarme, obviamente estoy usando un servidor local para hacer pruebas.... pero después cuando suba estos archivos PHP al servidor web, ahí no tengo acceso al PHP.INI ni tampoco puedo colocar un archivo DLL en donde están las extensiones... entonces como lo podría realizar ??

La verdad, hace dos días que intento e intento, y nada... está sacando lo peor de mí.
Cualquier otra ayuda, te agradecería.

Saludos y muchas gracias nuevamente!!
  #4 (permalink)  
Antiguo 11/09/2014, 19:34
Avatar de kakashi20  
Fecha de Ingreso: septiembre-2009
Mensajes: 616
Antigüedad: 14 años, 7 meses
Puntos: 15
Respuesta: Conectar PHP a SQL Server

Hola Jamati

Aqui te dejo algunos pasos para conectar php con sqlserver r2 2008. Pues hice esta conexion y me funciono. Tal vez algunos enlaces esten desactualizados, como el de microsoft pero en aquel entonces consegui los driver en ese link.

Alguna idea, esto te puede dar.

Microsoft SQL Server 2008 R2

Pasos:
Cita:
1. Obtener el entorno bajo el cual esta funcionando mi servidor, para esto debo:
o Abrir mi PHP info en http://localhost/xampp/
o tomar nota del valor de Thread Safety, en mi caso =enabled
o Tomar el valor de la version de PHP, en mi caso 5.3.8
o Tomar el valor de Compiler, en mi caso VC9
2. Descargar de Microsoft los drivers respectivos. Los podes hallar en http://www.microsoft.com/download/en....aspx?id=17308 Microsoft Drivers 3.0 for SQL Server for PHP CTP1.
3. Instalar los drivers en el directorio donde esta xampp. En mi caso esta en c:/xampp/php/ext
4. Luego buscar en esos directorios los archivos instalados, que debieran ser similares a php_sqlsrv_53_ts_vc9.dll donde:
o 53 -> indica el version de mi PHP=5.3.x
o ts -> significa que el para entorno THREAD-SAFE=enabled
o vc9 -> indica que el compilador de mi PHP es VC9
o Entonces tomo nota del nombre del archivo correspondiente php_sqlsrv_53_ts_vc9.dll
5. Editar el PHP.ini que en mi caso está en c:/xampp/php, donde:
o Busco el inicio del segmento Dynamic Extensions
o Al final del segmento, y antes del siguiente, agrego la extension de mi libreria, la cual quedaria extension=php_sqlsrv_53_ts_vc9.dll. Donde he usado el nombre del archivo instalado en el paso 4.
o Grabo el php.ini y lo cierro
6. Detengo y reinicio mi servicio Apache

Archivo configuracion:

Código PHP:
Ver original
  1. <?php
  2. $servidor="Jaime-PC\SQLEXPRESS";
  3. $usuario="";
  4. $clave="";
  5. $bd="prueba";
  6. /*dl('php_pdo_sqlsrv_53_ts.dll');
  7.  
  8. $serverName = "Jaime-PC\SQLEXPRESS";  
  9.  
  10. $connectionInfo = array( "Database"=>"prueba");
  11. $conn = sqlsrv_connect( $serverName, $connectionInfo);
  12.  
  13. if( $conn ) {
  14.      echo "Conectado a la Base de Datos.<br />";
  15. }else{
  16.      echo "NO se puede conectar a la Base de Datos.<br />";
  17.      die( print_r( sqlsrv_errors(), true));
  18. }  */
  19. ?>

Archivo respuesta:

Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4. require("configuracion.php");
  5. @ $link = mssql_connect($servidor,$usuario,$clave);
  6. @ $sel = mssql_select_db($bd,$link);
  7.  
  8. /*$link = mysql_connect($servidor,$usuario,$clave);
  9. mysql_select_db($bd,$link);*/
  10.  
  11. $nom = $_POST['nom'];
  12.  
  13. $ape = $_POST['ape'];
  14.  
  15.  
  16.  
  17. $result = mssql_query("INSERT INTO usuario (nom, ape) VALUES('".$nom."','".$ape."')",$link);   
  18.  
  19. echo "hizo";
  20.  
  21.  
  22. ?>


Index.php

Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4. require("configuracion.php");
  5. $link = mssql_connect($servidor,$usuario,$clave);
  6. $sel = mssql_select_db($bd,$link);
  7.  
  8. echo "hoola";
  9.  
  10. if( $link ) {
  11.      echo "Conectado a la Base de Datos.<br />";
  12. }else{
  13.      echo "NO se puede conectar a la Base de Datos.<br />";
  14. }
  15. ?>
  16.                             <form id="form1" name="form1" action="in.php" method="post">
  17.                            
  18.                             <table width="600px" align="center">
  19.                                        
  20.                                        
  21.                            
  22.                                                                
  23.                                        <tr>
  24.                                        
  25.                                             <td class="listado">
  26.                                            
  27.                                             Nombre:
  28.                                            
  29.                                             </td>
  30.                                            
  31.                                            
  32.                                        </tr>
  33.                                        
  34.                                        
  35.                                          
  36.                                          <tr>
  37.                                        
  38.                                             <td class="listado" colspan="2">
  39.                                            
  40.                                             <input type="text" name="nom" />
  41.                                            
  42.                                             </td>
  43.                                          
  44.                                          </tr>
  45.                                          
  46.                                          
  47.                                          <tr>
  48.                                        
  49.                                             <td class="listado">
  50.                                            
  51.                                             Apellido:
  52.                                            
  53.                                             </td>
  54.                                            
  55.                                            
  56.                                        </tr>
  57.                                        
  58.                                        
  59.                                          
  60.                                          <tr>
  61.                                        
  62.                                             <td class="listado" colspan="2">
  63.                                            
  64.                                             <input type="text" name="ape" />
  65.                                            
  66.                                             </td>
  67.                                          
  68.                                          </tr>
  69.                                        
  70.                                         <tr>
  71.                                        
  72.                                             <td class="listado" colspan="2">
  73.                                            
  74.                                             <input type="submit" value="enviar" />
  75.                                            
  76.                                             </td>
  77.                                          
  78.                                          </tr>
  79.                                        
  80.                                          
  81.                                          
  82.                                        
  83.                                        
  84.                              </table>
  85.                              </form>
  #5 (permalink)  
Antiguo 16/09/2014, 20:05
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 2 meses
Puntos: 3
Respuesta: Conectar PHP a SQL Server

Gracias,
pero hice todos los pasos y no logré conectarme...

Hago las siguientes consultas:

1) Adicionalmente, cuando esto logre funcionarme en mi servidor local, cuando tenga que subir mi web a un hosting pago, no entiendo como puedo hacer uso de la DLL (ya que ahí no tengo acceso a la carpeta EXT)

2) El link que descargué, tiene estos archivos:
Cita:
php_pdo_sqlsrv_52_nts_vc6.dll
php_pdo_sqlsrv_52_ts_vc6.dll
php_pdo_sqlsrv_53_nts_vc6.dll
php_pdo_sqlsrv_53_nts_vc9.dll
php_pdo_sqlsrv_53_ts_vc6.dll
php_pdo_sqlsrv_53_ts_vc9.dll
php_sqlsrv_52_nts_vc6.dll
php_sqlsrv_52_ts_vc6.dll
php_sqlsrv_53_nts_vc6.dll
php_sqlsrv_53_nts_vc9.dll
php_sqlsrv_53_ts_vc6.dll
php_sqlsrv_53_ts_vc9.dll
SQLSRV_Help.chm
SQLSRV_Readme.htm
SQLSRV_License.rtf
He marcado con negrita el que yo creo que debo llamar... es correcto?
Consulto porque yo tengo la versión 5.4.16 de PHP ... y no veo ningún archivo que diga "php_sqlsrv_54_ts_vc9.dll"

3) Siguiendo los pasos anteriores, y suponiendo que el archivo es el marcado con negrita, al ejecutar aparece el siguiente error:
Fatal error: Call to undefined function mssql_connect() in .................. on line 8
La línea 8 dice lo siguiente:
$link = mssql_connect($servidor,$usuario,$clave);


Muchas gracias por cualquier otra ayuda.

Última edición por Jamati; 16/09/2014 a las 20:18
  #6 (permalink)  
Antiguo 17/09/2014, 07:16
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Conectar PHP a SQL Server

Hola jamati,
obviamente no leiste o no entendiste lo que te indiqué sobre las versiones del php.
Leelo nuevamente y relacionalo con lo que dice kakashi20 , que por cierto ese código solo funciona en PHP 5.2
Sobre php 5.4 deberias leer en php.net que dicen al respecto,
las dll no las proporciona PHP sino que las crea el mismo Microsoft, y si no existe es por que aún no se creó.

En cuanto al hosting te recomiendo que contrates ,o que tu cliente contrate, un servicio que puedas controlar tanto el apache como el php. incluso hacer instalaciones personalizadas.

O bien que el hosting tenga un buen soporte y respuesta por que te digo que las configuraciones no son pocas.
  #7 (permalink)  
Antiguo 17/09/2014, 07:18
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Conectar PHP a SQL Server

Hola Kakasgi20,
no se de dónde sacaste ese código de conexión, pero todos los parametros tienen que ir en comillas simples:

Código PHP:
Ver original
  1. <?php
  2. $servidor='Jaime-PC\SQLEXPRESS';
  3. $usuario='user';
  4. $clave='clave';
  5. $bd='prueba';
  6.  
  7. ?>

estuve una semana con este problema para poder conectarme, por las dudas te lo corrijo

Etiquetas: server, sql, variable
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




La zona horaria es GMT -6. Ahora son las 20:16.