Foros del Web » Programando para Internet » PHP »

Php + Odbc + Mssql

Estas en el tema de Php + Odbc + Mssql en el foro de PHP en Foros del Web. Hola, dos preguntas ... tengo que conectar con una base sql server, lo hice por odbc ya que no pude conectarme por mssql. Me da ...
  #1 (permalink)  
Antiguo 02/03/2005, 08:18
Avatar de jpvilar  
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 12 años, 10 meses
Puntos: 1
Php + Odbc + Mssql

Hola, dos preguntas ... tengo que conectar con una base sql server, lo hice por odbc ya que no pude conectarme por mssql.
Me da la sensación que al ser por odbc se me limitan las funciones (por ejemplo no tengo el fetch_array y tengo que ir declarando las variables una por una)
Primer pregunta: ¿alguien me puede pasar un script de conexión a una bd sql server?
Segunda pregunta: ¿como limito un query en odbc? si le pongo "limit 20" me tira error de sintaxis, el script es el siguiente:

$conn=odbc_connect(nombre dns,usuario,'password');
$sql="SELECT * FROM tabla order by apellidos desc limit 20";
$rs=odbc_exec($conn,$sql);
while (odbc_fetch_row($rs)){
$leg = odbc_result($rs,"legajo");
$ape = odbc_result($rs,'apellidos');
$nom = odbc_result($rs,'nombres');
echo "<strong>Apellido y nombre:</strong>".$ape.", ".$nom."<br><strong>=> Legajo</strong>:". $leg."<br><br>";
}
odbc_close($conn);


Desdde ya muchas gracias.
__________________
JuanP
QUIEN NO SE EQUIVOCA NO APRENDE ...
QUIEN NO APRENDE SE EQUIVOCA ... PERO NO APRENDE

Última edición por jpvilar; 02/03/2005 a las 08:20
  #2 (permalink)  
Antiguo 02/03/2005, 08:55
 
Fecha de Ingreso: enero-2005
Mensajes: 10
Antigüedad: 12 años, 10 meses
Puntos: 0
Tu primera pregunta; si se limitan las funciones con odbc no tengo idea porque nunca he conectado de esa manera, siempre lo he hecho con dll. Y te lo explico a continuacion:

En el archivo de configuracion del servidor apache agregar las siguientes
lineas en httpd.conf

AddCharset ISO-8859-1 .iso-es
AddCharset UTF-8 .utf8

en la prioridad de lenguaje dejar 'es' en el primer lugar

LanguagePriority es
----------------------------------------------------------------------------------
en la carpeta WinNT en la unidad C , buscar el archivo PHP.INI
sacar el comentario a la linea

extension=php_mssql.dll

que va comentada con ';'

y eso es todo.

Última edición por viejito_kike; 02/03/2005 a las 08:57
  #3 (permalink)  
Antiguo 02/03/2005, 09:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Me da la sensación que al ser por odbc se me limitan las funciones (por ejemplo no tengo el fetch_array y tengo que ir declarando las variables una por una)
No sé que versión de PHP usas .. pero las funciones xxxx_fetch_array() las puedes usar para ODBC desde 4.0.2 (o así dice la documentación):
http://tr2.php.net/manual/en/functio...etch-array.php

en su defecto .. si te fijas en los comentarios de los usuarios de dicha función .. veras alternativas para implementar esa función (usando otras funciones básicas de ODBC).


Cita:
Primer pregunta: ¿alguien me puede pasar un script de conexión a una bd sql server?
www.php.net/odbc_connect

Cita:
Segunda pregunta: ¿como limito un query en odbc? si le pongo "limit 20" me tira error de sintaxis, el script es el siguiente:
Bueno .. "LIMIT" es una sentencia de SQL .. pero de Mysql (y que usa también PostgreSQL pero creo que ahí el orden de los factores es al reves ..) .. En MS SQL Server existe el "TOP" .. algo similar a LIMIT .. pero no igual ni se usa en el mismo sitio .. Revisa primero si en MS SQL Server en su SQL puedes usar "LIMIT" .. o tendrás que usar "TOP" o lo que corresponda para hacer dicha taréa.

A todo esto .. lo que deberías usar son las funciones "nativas" de MS SQL Server de PHP de su extensión mssql:
www.php.net/mssql

El rendimiento es muchoooooo mejor que pasar por el cuello de botella que es ODBC, sólo requieres instalar dicha extensión en PHP (habilitar: php_mssql.dll) y copiar la libreria "cliente" de MS SQL Server ntwdblib.dll a tu windows/system ...

Un saludo,
  #4 (permalink)  
Antiguo 02/03/2005, 10:08
Avatar de jpvilar  
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 12 años, 10 meses
Puntos: 1
Gracias, estiy usando php 5.0.3, descomenté el "extension=php_mssql.dll", copié el ntwdblib.dll al directorio System32 y sigo sin poderme conectar. Paso el script de conexión de mssql a ver si tiene agun error:

$msconnect = @mssql_connect("SRV-MS-DB-G","user","pass")
or die("Couldn't connect to SQL Server on $myServer");
$msdb = @mssql_select_db("DEVELOP",$msconnect)
or die("Couldn't connect to SQL BD on $myServer");
if (!$msconnect) {
echo "NO"; }
$sql = "SELECT * FROM leg";
$result = mssql_query($sql);
while ($ape = mssql_fetch_array($result)) {
echo "$ape[legajo]";
}


con el @mssql_query me tira:
Couldn't connect to SQL Server on

si le saco el @:
Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: SRV-MS-DB-G in c:\servidor\intranet\config.php on line 14
Couldn't connect to SQL Server on


Gracias de todos modos
__________________
JuanP
QUIEN NO SE EQUIVOCA NO APRENDE ...
QUIEN NO APRENDE SE EQUIVOCA ... PERO NO APRENDE
  #5 (permalink)  
Antiguo 02/03/2005, 12:19
 
Fecha de Ingreso: enero-2005
Mensajes: 10
Antigüedad: 12 años, 10 meses
Puntos: 0
Con el Notepad editar el PHP.ini, quizá no esta apuntando. Ahora hay que decirle al PHP que tiene una librería nueva y que la debe usar. Así que editaremos el PHP.ini con el Notepad, normalmente el PHP.ini está en el directorio C:\WINNT.

Busca la línea en la que pone "extension_dir = " y modifícala para que apunte al directorio donde hemos copiado la DLL. Con esto le indicamos al PHP donde están las DLL de extensión. Ej. en mi caso mi php.ini quedo asi extension_dir ="C:\AppServ\php\ext" asi apunto donde esta mi dll "php_mssql.dll"
Graba el fichero PHP.ini y ya está.

Quizá eso falta, avisa si funciona.
Saludos
  #6 (permalink)  
Antiguo 02/03/2005, 13:08
Avatar de jpvilar  
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 12 años, 10 meses
Puntos: 1
Gracias viejito_kike, lo pruebo y te cuento aunque te digo que por lo pronto tuve que editar el php.ini para habilitar el mysql así que creo que debe estar bien ...
Ahora bien, cuando le pongo "$msconnect = @mssql_connect("SRV-MS-DB-G","user","pass")" ¿lo que tengo que apuntar es al servidor donde está el sql server o al dsn de mi máquina? ¿ahora estoy trabajando sobre un localhost de apache?
Saludos
__________________
JuanP
QUIEN NO SE EQUIVOCA NO APRENDE ...
QUIEN NO APRENDE SE EQUIVOCA ... PERO NO APRENDE
  #7 (permalink)  
Antiguo 25/08/2014, 11:14
 
Fecha de Ingreso: octubre-2012
Mensajes: 202
Antigüedad: 5 años, 1 mes
Puntos: 0
Respuesta: Php + Odbc + Mssql

Te ayudo en lo que puedo porque estube luchando con algo de esto...

cadena de conexión en php para odbc:

Código PHP:
    <?php  
             
            $server
="SKULD-PC\SQLF";
            
$user="maestro";
            
$password="123456";
            
$database="joseUser";
            
            
$conn odbc_connect("Driver={SQL Server Native Client 10.0}; Server=$server; Database=$database;"$user$password);
        
?>
user y pass es el de la instancia de sql server.. el que te pide cuando abris el explorador de objetos

y database el nombre de tu base como asi dice

tenes q ver también que versión de native cliente tenes instalada. yo en mi caso la 10. fíjate bien el tema de las versiones compatibilidades porque ahi se te puede generar un problema...
espero ser de ayuda
  #8 (permalink)  
Antiguo 25/08/2014, 11:30
Avatar de jpvilar  
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Php + Odbc + Mssql

Hola jmm87, gracias por responder. Te cuento que ya ni recuerdo como terminé resolviendo ese tema, es un post en el foro del año 2005 y un tiempito después dejé de trabajar con sql server así que no creo poder probarlo.
Gracias igual por tu aporte, slds, Juan.
__________________
JuanP
QUIEN NO SE EQUIVOCA NO APRENDE ...
QUIEN NO APRENDE SE EQUIVOCA ... PERO NO APRENDE
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 01:22.