Buenas como le va, pues aquí con un nuevo tema que me agrado y aplique donde laboro, bueno como dice el titulo vamos a conectarnos a una base de datos de un DB2, yo lo probé con un Iseries (AS/400) el cual es meramente sencillo.
Pues Vamos a Empezar….
Una vez que ya tengamos PHP instalado o un servidor web como WAMP o XAMPP para Windows procedemos a revisar las extensiones con las que contamos para los controladores de ODBC que utilizaremos, en este caso es muy importante revisar esto ya de no contar con alguno de ellos no podremos conectarnos correctamente.
Vamos a revisar dos cosas en la carpeta EXT de nuestro PHP revisemos si contamos con la DLL que lleva por nombre php_odbc.dll, de no contar con el debemos descargarlo y colocarlo en esta carpeta.
Te dejo la liga de descarga, solo da Clic: Descargar php_odbc.dll
Este tiene que quedar de la siguiente manera en la carpeta:
Una vez que ya tenemos nuestra DLL procedemos a revisar nuestro archivo PHP.ini en la sección de extensiones para ver si esta extensión se encuentra activa.
Podemos ver que en la siguiente imagen no se encuentra la extensión.
! Ahora que aremos ¡
No te preocupes es muy sencillo resolver esto, además que en XAMPP esta instrucción no viene dentro del nuestro archivo PHP.ini de la versión 7 de PHP que estamos utilizando, solo colocaremos la siguiente instrucción: extension=php_odbc.dll y guardamos los cambios y reiniciamos de nuevo nuestro servidor de Apache, para que se tomen los cambios.
El archivo debe quedar así:
Ya que tenemos preparado nuestro servidor configurado y con las Dll’s que necesitamos, diría un Youtuber !Ahora si viene lo chido¡
Utilizaremos la instrucción odbc_connect de PHP para poder realizar esta conexión, las instrucciones que yo utilice fueron las siguientes:
$dsn ="DRIVER={iSeries Access ODBC Driver};SYSTEM=tuip;";
$usuario = "tuusuario";
$contraseña = "tupass";
$dbconect = odbc_connect($dsn, $usuario, $contraseña);
if ($dbconect == 0) {
echo("Ha fallado la conexión a la base de datos.");
$sqlerror = odbc_errormsg($dbconect);
echo($sqlerror);
}
else {
echo ("Conexión exitosa");
}
odbc_close( $dbconect );
Te explico un poco el código?
La siguiente instrucción nos ayuda a indicar nuestro origen de datos:
$dsn ="DRIVER={iSeries Access ODBC Driver};SYSTEM=tuip;";
En palabras más sencillas le indicamos el tipo de base de datos y la ip de nuestro servidor a donde se va a conectar en este caso un Iseries (AS/400)
El siguiente fragmento nos ayuda para usar el usuario y contraseña asignado para conectarnos al DB2
$usuario = "tuusuario";
$contraseña = "tupass";
Y el más importante la instrucción a la conexión para que nuestro PHP pueda conectarse al servidor Iseries.
$dbconect = odbc_connect($dsn, $usuario, $contraseña);
Adicional a esto tenemos una validación para saber si estamos conectados o no como se muestra a continuación:
if ($dbconect == 0) {
echo("Ha fallado la conexión a la base de datos.");
$sqlerror = odbc_errormsg($dbconect);
echo($sqlerror);
}
else {
echo ("Conexión exitosa");
}
odbc_close( $dbconect );
Te preguntaras que es la instrucción: odbc_close( $dbconect );
Bueno esta instrucción nos ayuda a cerrar la conexión a nuestro DB2 y así no dejarla abierta y ocasionar errores con algunas consultas que lo estén necesitando de esta misma manera.
Notas muy importantes:
- Debes considerar que debes tener instalado los drivers de Iseries para que la conexión ODBC funcione, por lo tanto te recomiendo descargar el Iserires Navigator y como prueba de funcionalidad generar una odbc de forma manual y probar que se conecte.
- En la versión 5 de PHP no es necesario revisar la carpeta EXT ni el archivo PHP.ini ya que en esta si viene activado estas librerías.
Pues esto sería todo de mi parte y con el código que les deje me funciono perfecto, les dejo la imagen:
Espero les sirva, como a mí me sirvió.
Lil Junior les desea lo mejor y mucho éxito.