1. Acceso a bases de datos
con MySQL y ODBC desde
PHP
Gustavo C. Vilchez Mallqui
2. Acceso a bases de datos con MySQL y ODBC desde PHP
Introducción
Conceptos previos
Profundizando
Como acceder a bases de datos, realizar consultas, ...
Funciones MySQL, ODBC
Funciones para el manejo de bases de datos
Ejemplos
Bibliografía
Índice
3. Acceso a bases de datos con MySQL y ODBC desde PHP
ODBC
◦ ODBC (Open DataBase Conectivity) es un estándar de
acceso a bases de datos en PHP que nos permite el
acceso a muchas bases de datos, manteniendo casi
intacta la sintaxis de acceso y manejo.
Para poder llevar a cabo ODBC, los sistemas gestores
de bases de datos tienes que se compatibles.
◦ Por ejemplo, podemos acceder a bases de datos, como:
Access, Adabas D, IBM DB2, iODBC, Solid…
Introducción
4. Acceso a bases de datos con MySQL y ODBC desde PHP
MySQL
◦ MySQL es un sistema gestor de bases de datos
muy extendido en el mundo de la
programación Web y que además es de
software libre.
Este software integrado con PHP es
considerado por
muchos programadores como la mejor
combinación Lenguaje - Sistema gestor de
bases de datos.
Introducción
5. Acceso a bases de datos con MySQL y ODBC desde PHP
DSN - Representa todo lo relativo a una
fuente de datos configurada por el
usuario. Esta configuración es
imprescindible para que los drivers o
controladores tengan la información
necesaria para conectarse a una base de
datos especifica.
BD – Base de Datos
SGBD – Sistema Gestos de Bases de
Datos
Conceptos clave
6. Acceso a bases de datos con MySQL y ODBC desde PHP
Como se utilizan las bases de datos
◦ Para acceder a una BD y obtener los datos
deseados, ya sea vía MySQL, ODBC o cualquier
SGBD, se deben seguir los siguientes pasos:
Conexión
◦ Especificamos el origen de datos y se procede a conectar.
Operación
◦ Realizamos las consultas necesarias obteniendo los datos
deseados y operando con ellos.
Desconexión (importante!)
◦ Cerramos la conexión con la base de datos.
Profundizando
7. Acceso a bases de datos con MySQL y ODBC desde PHP
Conexión
Paso primordial. Sin este paso, no podemos hacer
nada con el servidor de base de datos. De todas
formas, necesitamos estar explícitamente
conectados a la BD para poder realizar cualquier
operación. Métodos de conexión:
Método MySQL: mysqli_connect
Método ODBC: odbc_connect
Profundizando
8. Acceso a bases de datos con MySQL y ODBC desde PHP
Conexión
Ejemplo MySQL:
◦ <?
$conexion =
mysqli_connect(‘host’,’usuario’,’clave’,’DSN_BD’);
if ($conexion == FALSE){
echo (‘Error en la conexion’);
exit();
}
...
Profundizando
9. Acceso a bases de datos con MySQL y ODBC desde PHP
Conexión
Ejemplo ODBC:
◦ <?
$conexion = odbc_connect(‘DSN_BD’,’usuario’,’clave’);
if ($conexion == FALSE){
echo (‘Error en la conexion’);
exit();
}
...
En ambos ejemplos, ‘$conexion’ guarda un
identificador (“puntero”) a la base de datos con el
que podemos realizar las operaciones deseadas. Si
no se puede conectar, la variable pasa a valer
FALSE.
Profundizando
10. Acceso a bases de datos con MySQL y ODBC desde PHP
Operación
Una vez conectados correctamente a la BD,
procedemos a realizar las consultas necesarias.
Para ello, utilizamos los siguientes métodos.
Método MySQL: mysqli_query
Método ODBC: odbc_exec, odbc_do
Profundizando
11. Acceso a bases de datos con MySQL y ODBC desde PHP
Operación
Ejemplo MySQL:
◦ <?
$resultado = mysqli_query($conexion,’SELECT * FROM ...’);
if ($resultado == FALSE){
echo (‘Error en la consulta’);
}else{
echo (‘Consulta realizada con éxito’);
}
...
Profundizando
12. Acceso a bases de datos con MySQL y ODBC desde PHP
Operación
Ejemplo ODBC:
◦ <?
$resultado = odbc_exec($conexion,’SELECT * FROM ...’);
if ($resultado == FALSE){
echo (‘Error en la consulta’);
}else{
echo (‘Consulta realizada con éxito’);
}
...
Profundizando
13. Acceso a bases de datos con MySQL y ODBC desde PHP
Operación
Existen dos tipos de consultas SQL en cuanto al tipo
de valor que devuelven.
◦ Las que devuelven true o false. Son sentencias del tipo
INSERT,DELETE, UPDATE, ...
◦ Y las que devuelven un resultado (SELECT, SHOW...). Son
variables de tipo objeto que, al igual que en la conexión,
devuelven un identificador y que además necesitan unos
métodos específicos para poder extraer los valores
deseados. Estos métodos son los siguientes:
◦ Método MySQL: mysqli_fetch_row -> extrae fila
◦ Método ODBC: odbc_fetch_row -> extrae fila
Profundizando
14. Acceso a bases de datos con MySQL y ODBC desde PHP
Operación
Ejemplo MySQL (extraer datos de resultado):
◦ <?
...
while ($fila = mysqli_fetch_row($resultado)){
echo (“$fila[0], $fila[1]”); Diagrama de flujo
}
...
?>
La variable fila contiene los valores de cada
columna de la tabla del resultado y se extraen
como si fuera un array.
Profundizando
15. Acceso a bases de datos con MySQL y ODBC desde PHP
Operación
Ejemplo ODBC (extraer datos de resultado):
◦ <?
...
while ($fila = odbc_fetch_row($resultado)){
echo (“$fila[0], $fila[1]”);
} Diagrama de
flujo
...
?>
En ambos casos, también podemos acceder a los
datos, en vez de ‘$fila[entero]’, usando el
identificador de la columna de la BD. Ejemplo:
odbc_result($Resultado, ‘nombreColumna');
mysqli_result($Resultado, ‘nombreColumna');
Profundizando
16. Acceso a bases de datos con MySQL y ODBC desde PHP
Desconexión
Cuando nos conectamos a una BD y extraemos datos
estamos consumiendo recursos del servidor. Si no cerramos
convenientemente la conexión y las consultas no liberamos la
memoria que consumen. Este “error”, multiplicado por el
numero de peticiones de clientes a la BD, puede ocasionar
problemas con el buen funcionamiento del servicio WEB.
Por tanto, se recomienda encarecidamente liberar dichos
recursos con los siguientes métodos.
Métodos: mysqli_free_result -> libera recursos de una
consulta
mysqli_close -> cierra la conexión con la BD
Profundizando
17. Acceso a bases de datos con MySQL y ODBC desde PHP
Desconexión
Ejemplo:
◦ ...
mysqli_free_result($resultado);
mysqli_close($conexion);
?>
Profundizando
18. Acceso a bases de datos con MySQL y ODBC desde PHP
En MySQL o ODBC existen una gran
cantidad de funciones para operar con
bases de datos que nos facilitan
enormemente el trabajo. Solo se mostrara
las mas importantes, para mas
información consultar en la Web oficial de
PHP en: www.php.net
Funciones
19. Acceso a bases de datos con MySQL y ODBC desde PHP
Debido a que prácticamente la única
diferencia en la sintaxis es el uso de “mysqli
<-> odbc”, los sustituiremos por x.
◦ x_columns -> Devuelve información sobre nombres de columnas.
◦ x_tables -> Devuelve información sobre nombres de tablas.
◦ x_data_source -> Devuelve información sobre el origen de datos actual.
◦ x_error -> Devuelve el ultimo código de error.
◦ x_errormsg -> Devuelve el ultimo mensaje de error.
◦ x_num_fields -> Devuelve el número de columnas de un resultado.
◦ x_num_rows -> Devuelve el número de filas de un resultado.
◦ x_result -> Obtiene los datos de un resultado.
◦ x_fetch_array -> Devuelve los datos de un resultado en un array.
◦ x_fetch_object -> Devuelve los datos de un resultado en variable de tipo
objeto.
Funciones
20. Acceso a bases de datos con MySQL y ODBC desde PHP
Ejemplos
Ejemplos orientativos completos de acceso a base
de datos.
MySQL
◦ <?
@$transportes = mysqli_connect(‘localhost’,’usuario’,’password’,’transportes’);
if (!$transpotes){
echo (‘Error. No se ha podido conectar con la base de datos’);
}else{ // conectado!
@$empleados = mysqli_query($transportes,’SELECT * FROM empleados’);
if (!$empleados){
echo (‘Error. No se ha podido realizar la consulta’);
}else{ // datos obtenidos!
while (mysqli_fetch_row($empleados)){
echo (‘Nombre: ’ . mysqli_result($empleados,Nombre’) . ‘<br/>’);
}}
mysqli_free_result($empleados);
mysqli_close($transportes);
}
?>
21. Acceso a bases de datos con MySQL y ODBC desde PHP
Ejemplos
ODBC
◦ <?
@$transportes = odbc_connect(‘localhost’,’usuario’,’password’,’transportes’);
if (!$transpotes){
echo (‘Error. No se ha podido conectar con la base de datos’);
}else{ // conectado!
@$empleados = odbc_exec($transportes,’SELECT nombre FROM empleados’);
if (!$empleados){
echo (‘Error. No se ha podido realizar la consulta’);
}else{ // datos obtenidos!
while (odbc_fetch_row($empleados)){
echo (‘Nombre: ’ . odbc_result($empleados,nombre’) . ‘<br/>‘);
}}
odbc_free_result($empleados);
odbc_close($transportes);
}
?>
22. Acceso a bases de datos con MySQL y ODBC desde PHP
http://www.pecesama.net/php/odbc.php
http://es.wikipedia.org/wiki/Mysql
http://es.wikipedia.org/wiki/DSN
http://es.wikipedia.org/wiki/ODBC
Bibliografía