Está en la página 1de 7

UnixODBC para la conexion MsSql con PHP en

Linux Centos 5
Esta fue una de esas ideas locas de probar conexiones a MS SQL SERVER con PHP desde mi
servidor web Linux mediante UnixODBC a un Servidor Windows.

Requerimiento
UnixODBC http://www.unixodbc.org/drivers.html
FreeTDS http://www.freetds.org
PHP http://www.php.net

Instalando UnixODBC
view plainprint?

1. yum -y install unixODBC-GUI-Qt

En el encontre que necesitaba librerias *.so, para entablar una conexion usando un DSN,
manos a la obra como dice en la pagina de unixodbc habia que instalar un FreeTDS

Instalando FreeTDS

view plainprint?

1. yum -y install freetds*

ahora una vez instalado ya tenemos las librerias FreeTDS para hacer conexion con base de
datos Sysbase y MsSql Server.

Configuración de Alias para las conexiones con FreeTds

Editamos el archivo freetds.conf, es en este archivo donde debemos agregar nuestros alias
que manejaremos para nuestras conexion a los diferentes servidores Ms SqlServer que
tengamos en la red.
view plainprint?

1. vi /etc/freetds.conf

view plainprint?

1. #Esta es una tipica configuración Microsoft SQL Server 7.0


2. [MyServer70]
3. host = 172.16.0.253
4. port = 1433
5. tds version = 7.0
6. #Esta es una tipica configuración Microsoft SQL Server 2000
7. [MyServer2k]
8. host = 172.16.0.52
9. port = 1433
10. tds version = 8.0

Configuración Formato de Fechas

Editemos el archivo locales.conf, Es bastante comun que necesitemos configurar el manejo del
formato de fechas en nuestro servidor, para que php nos devuelva el formato como mejor nos
parezca.
view plainprint?

1. vi /etc/locales.conf

view plainprint?

1. [default]
2. date format = %d/%m/%Y %H:%M:%S
3. #[default_orig]
4. #date format = %b %d %Y %I:%M%p

Conectando con Tsql a nuestro servidor Ms SqlServer


vamos hacer una prueba de conexion usando Tsql, para probar nuestro alias con FreeTDS.
view plainprint?

1. tsql -S myserver70 -p 1433 -U sa


Configurando UnixODBC

necesitamos configurar el archivo odbcinst.ini para referenciar las librerias y que estas puedan
ser usadas a la hora de utilizar una conexion ODBC.
view plainprint?

1. vi /etc/odbcinst.ini

view plainprint?

1. # Included in the unixODBC package


2. [PostgreSQL]
3. Description = ODBC for Postgre
4. SQLDriver = /usr/lib/libodbcpsql.so
5. Setup = /usr/lib/libodbcpsqlS.so
6. FileUsage = 1
7. # Driver from the MyODBC package
8. # Setup from the unixODBC package
9. [MySQL]
10. Description = ODBC for MySQL
11. Driver = /usr/lib/libmyodbc.so
12. Setup = /usr/lib/libodbcmyS.so
13. FileUsage = 1
14. #Driver de FreeTDS
15. [FreeTDS]
16. Description = FreeTDS driver
17. Driver = /usr/lib/libtdsodbc.so
18. # ruta de la libreria odbc de freetds
19. Setup = /usr/lib/libtdsodbc.so
20. # ruta de la libreria odbc de freetds
21. Trace = YesTrace
22. File = /tmp/freetds.log
23. FileUsage = 1

Creando DSN con UnixODBC


bueno ahora solo bastara con hacer nuestro DSN usando UnixODBC; pero vamos hacerlo de
forma visual para que no quede dudas.

ejecutamos el comando ODBCConfig asi tal como esta escrito.


view plainprint?

1. ODBCConfig
Finalmente como resultado en el odbc.ini tendras esto.
view plainprint?

1. vi /etc/odbc.ini

view plainprint?

1. [EESA]
2. Description = FreeTDS
3. Driver = FreeTDS
4. Servername = MyServer70
5. Server = server2000
6. Address = 172.16.0.253
7. Port = 1433
8. Database = dbeesa
9. TDS_Version = 7.0
10. Language = us_english
11. TextSize =
12. Domain =
13. PacketSize =
14. [miconexion]
15. Description = MySQL
16. Driver = MySQL
17. Server = localhost
18. Database = mysql
19. Port = 3306
20. Socket =
21. Option =
22. Stmt =

Conectando con ISQL a nuestro servidor Ms SqlServer usando el DSN


view plainprint?

1. isql -v EESA sa

Codificando PHP
Solo nos falta la prueba final hacer conexion php usando funciones ODBC.
view plainprint?

1. touch /var/www/html/testodbc.phpvi /var/www/html/testodbc.php

view plainprint?

1. <?php
2. //conexion a la bd
3. $connection = odbc_connect('EESA', $user, $pass) or die('No pudo crear una conexión'
);
4. $sqlquery="select titleofcourtesy,firstname,lastname from Northwind..employees" ;
5. //odbc_exec($connection, $sqlquery);
6. $cur=odbc_exec($connection,$sqlquery);
7. print"
8. "; while(odbc_fetch_row($cur)){ //colleccion resultados $nombre=odbc_result($cur,2);
$apellido=odbc_result($cur,3); //format and display results print ("$nombre"); print ("$
apellido"); } print "<table></table>";
9. //cerrando la conexion
10. odbc_close($connection);
11. ?>
bueno ver para creer, ahi esta la prueba ahora no te olvides de compartir.
Publicadas por Superahacker
Enviar esto por correo electrónico BlogThis! Compartir en Twitter Compartir en Facebook
Compartir en Google Buzz
Etiquetas: centos, FreeTDS, Linux, UnixODBC