acceso a bases de datos con mysql y odbc desde php pablo lledó rovira

22
Acceso a bases de Acceso a bases de datos con MySQL y ODBC datos con MySQL y ODBC desde PHP desde PHP Pablo Lledó Pablo Lledó Rovira Rovira

Upload: chickie-belen

Post on 12-Jan-2015

26 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Acceso a bases de datos con MySQL y ODBC desde PHP Pablo Lledó Rovira

Acceso a bases de datos Acceso a bases de datos con MySQL y ODBC desde con MySQL y ODBC desde

PHPPHP

Pablo Lledó Pablo Lledó RoviraRovira

Page 2: Acceso a bases de datos con MySQL y ODBC desde PHP Pablo Lledó Rovira

ÍndiceÍndice

IntroducciónIntroducción Conceptos previosConceptos previos ProfundizandoProfundizando

Como acceder a bases de datos, realizar Como acceder a bases de datos, realizar consultas, ...consultas, ...

Funciones MySQL, ODBCFunciones MySQL, ODBC Funciones para el manejo de bases de datosFunciones para el manejo de bases de datos

EjemplosEjemplos BibliografíaBibliografía

Acceso a bases de datos con MySQL y ODBC desde PHPAcceso a bases de datos con MySQL y ODBC desde PHP

Page 3: Acceso a bases de datos con MySQL y ODBC desde PHP Pablo Lledó Rovira

IntroducciónIntroducción

ODBCODBC ODBC (Open DataBase Conectivity) es un estándar de ODBC (Open DataBase Conectivity) es un estándar de

acceso a bases de datos en PHP que nos permite el acceso a bases de datos en PHP que nos permite el acceso a muchas bases de datos, manteniendo casi acceso a muchas bases de datos, manteniendo casi intacta la sintaxis de acceso y manejo.intacta la sintaxis de acceso y manejo.

Para poder llevar a cabo ODBC, los sistemas gestores Para poder llevar a cabo ODBC, los sistemas gestores de bases de datos tienes que se compatibles.de bases de datos tienes que se compatibles.

Por ejemplo, podemos acceder a bases de datos, comoPor ejemplo, podemos acceder a bases de datos, como:: Access, Adabas D, IBM DB2, iODBC, Solid… Access, Adabas D, IBM DB2, iODBC, Solid…

Acceso a bases de datos con MySQL y ODBC desde PHPAcceso a bases de datos con MySQL y ODBC desde PHP

Page 4: Acceso a bases de datos con MySQL y ODBC desde PHP Pablo Lledó Rovira

IntroducciónIntroducción

MySQLMySQL MySQL es un sistema gestor de bases de datos MySQL es un sistema gestor de bases de datos

muy extendido en el mundo de la muy extendido en el mundo de la programación Web y que además es de programación Web y que además es de software libre.software libre.

Este software integrado con PHP es Este software integrado con PHP es considerado porconsiderado por

muchos programadores como la mejor muchos programadores como la mejor combinación Lenguaje - Sistema gestor de combinación Lenguaje - Sistema gestor de bases de datos.bases de datos.

Acceso a bases de datos con MySQL y ODBC desde PHPAcceso a bases de datos con MySQL y ODBC desde PHP

Page 5: Acceso a bases de datos con MySQL y ODBC desde PHP Pablo Lledó Rovira

Conceptos claveConceptos clave

DSN - Representa todo lo relativo a una DSN - Representa todo lo relativo a una fuente de datos configurada por el fuente de datos configurada por el usuario. Esta configuración es usuario. Esta configuración es imprescindible para que los drivers o imprescindible para que los drivers o controladores tengan la información controladores tengan la información necesaria para conectarse a una base de necesaria para conectarse a una base de datos especifica.datos especifica.

BD – Base de DatosBD – Base de Datos SGBD – Sistema Gestos de Bases de DatosSGBD – Sistema Gestos de Bases de Datos

Acceso a bases de datos con MySQL y ODBC desde PHPAcceso a bases de datos con MySQL y ODBC desde PHP

Page 6: Acceso a bases de datos con MySQL y ODBC desde PHP Pablo Lledó Rovira

ProfundizandoProfundizando

Como se utilizan las bases de datosComo se utilizan las bases de datos Para acceder a una BD y obtener los datos Para acceder a una BD y obtener los datos

deseados, ya sea vía MySQL, ODBC o cualquier deseados, ya sea vía MySQL, ODBC o cualquier SGBD, se deben seguir los siguientes pasos:SGBD, se deben seguir los siguientes pasos:

ConexiónConexión Especificamos el origen de datos y se procede a Especificamos el origen de datos y se procede a

conectar.conectar. OperaciónOperación

Realizamos las consultas necesarias obteniendo Realizamos las consultas necesarias obteniendo los datos deseados y operando con ellos.los datos deseados y operando con ellos.

Desconexión (importante!)Desconexión (importante!) Cerramos la conexión con la base de datos.Cerramos la conexión con la base de datos.

Acceso a bases de datos con MySQL y ODBC desde PHPAcceso a bases de datos con MySQL y ODBC desde PHP

Page 7: Acceso a bases de datos con MySQL y ODBC desde PHP Pablo Lledó Rovira

ProfundizandoProfundizando

ConexiónConexión Paso primordial. Sin este paso, no podemos Paso primordial. Sin este paso, no podemos

hacer nada con el servidor de base de datos. hacer nada con el servidor de base de datos. De todas formas, necesitamos estar De todas formas, necesitamos estar explícitamente conectados a la BD para explícitamente conectados a la BD para poder realizar cualquier operación. Métodos poder realizar cualquier operación. Métodos de conexión:de conexión:

Método MySQLMétodo MySQL: mysqli_connect : mysqli_connect Método ODBCMétodo ODBC: odbc_connect: odbc_connect

Acceso a bases de datos con MySQL y ODBC desde PHPAcceso a bases de datos con MySQL y ODBC desde PHP

Page 8: Acceso a bases de datos con MySQL y ODBC desde PHP Pablo Lledó Rovira

ProfundizandoProfundizando

ConexiónConexión Ejemplo MySQLEjemplo MySQL::

<?$conexion = mysqli_connect(‘host’,’usuario’,’clave’,’DSN_BD’);if ($conexion == FALSE){

echo (‘Error en la conexion’); exit();

}...

Acceso a bases de datos con MySQL y ODBC desde PHPAcceso a bases de datos con MySQL y ODBC desde PHP

Page 9: Acceso a bases de datos con MySQL y ODBC desde PHP Pablo Lledó Rovira

ProfundizandoProfundizando

ConexiónConexión Ejemplo ODBCEjemplo ODBC::

<?<?$conexion = $conexion =

odbc_connect(‘DSN_BD’,’usuario’,’clave’);odbc_connect(‘DSN_BD’,’usuario’,’clave’);if ($conexion == FALSE){if ($conexion == FALSE){ echo (‘Error en la conexion’);echo (‘Error en la conexion’); exit();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.

Acceso a bases de datos con MySQL y ODBC desde PHPAcceso a bases de datos con MySQL y ODBC desde PHP

Page 10: Acceso a bases de datos con MySQL y ODBC desde PHP Pablo Lledó Rovira

ProfundizandoProfundizando

OperaciónOperación Una vez conectados correctamente a la BD, Una vez conectados correctamente a la BD,

procedemos a realizar las consultas procedemos a realizar las consultas necesarias. Para ello, utilizamos los necesarias. Para ello, utilizamos los siguientes métodos.siguientes métodos.

Método MySQLMétodo MySQL: mysqli_query: mysqli_query Método ODBCMétodo ODBC: odbc_exec, odbc_do: odbc_exec, odbc_do

Acceso a bases de datos con MySQL y ODBC desde PHPAcceso a bases de datos con MySQL y ODBC desde PHP

Page 11: Acceso a bases de datos con MySQL y ODBC desde PHP Pablo Lledó Rovira

ProfundizandoProfundizando

OperaciónOperación Ejemplo MySQLEjemplo MySQL::

<?$resultado = mysqli_query($conexion,’SELECT * FROM ...’);if ($resultado == FALSE){

echo (‘Error en la consulta’);}else{

echo (‘Consulta realizada con éxito’);}...

Acceso a bases de datos con MySQL y ODBC desde PHPAcceso a bases de datos con MySQL y ODBC desde PHP

Page 12: Acceso a bases de datos con MySQL y ODBC desde PHP Pablo Lledó Rovira

ProfundizandoProfundizando

OperaciónOperación Ejemplo ODBCEjemplo ODBC::

<?$resultado = odbc_exec($conexion,’SELECT * FROM ...’);if ($resultado == FALSE){

echo (‘Error en la consulta’);}else{

echo (‘Consulta realizada con éxito’);}...

Acceso a bases de datos con MySQL y ODBC desde PHPAcceso a bases de datos con MySQL y ODBC desde PHP

Page 13: Acceso a bases de datos con MySQL y ODBC desde PHP Pablo Lledó Rovira

ProfundizandoProfundizando

OperaciónOperación Existen dos tipos de consultas SQL en cuanto Existen dos tipos de consultas SQL en cuanto

al tipo de valor que devuelven.al tipo de valor que devuelven. Las que devuelven true o false. Son sentencias del Las que devuelven true o false. Son sentencias del

tipo INSERT,DELETE, UPDATE, ...tipo INSERT,DELETE, UPDATE, ... Y las que devuelven un resultado (SELECT, Y las que devuelven un resultado (SELECT,

SHOW...). Son variables de tipo objeto que, al igual SHOW...). Son variables de tipo objeto que, al igual que en la conexión, devuelven un identificador y que en la conexión, devuelven un identificador y que además necesitan unos métodos específicos que además necesitan unos métodos específicos para poder extraer los valores deseados. Estos para poder extraer los valores deseados. Estos métodos son los siguientes:métodos son los siguientes:

Método MySQL: mysqli_fetch_row -> extrae filaMétodo MySQL: mysqli_fetch_row -> extrae fila Método ODBC: odbc_fetch_row -> extrae filaMétodo ODBC: odbc_fetch_row -> extrae fila

Acceso a bases de datos con MySQL y ODBC desde PHPAcceso a bases de datos con MySQL y ODBC desde PHP

Page 14: Acceso a bases de datos con MySQL y ODBC desde PHP Pablo Lledó Rovira

ProfundizandoProfundizando

OperaciónOperación Ejemplo MySQL (extraer datos de resultado):Ejemplo MySQL (extraer datos de resultado):

<?<?......while ($fila = mysqli_fetch_row($resultado)){ while ($fila = mysqli_fetch_row($resultado)){

echo (“$fila[0], $fila[1]”); echo (“$fila[0], $fila[1]”); Diagrama de flujoDiagrama de flujo

}} ......

?>?> La variable fila contiene los valores de cada La variable fila contiene los valores de cada columna de la tabla del resultado y se extraencolumna de la tabla del resultado y se extraen

como si fuera un array.como si fuera un array.

Acceso a bases de datos con MySQL y ODBC desde PHPAcceso a bases de datos con MySQL y ODBC desde PHP

Page 15: Acceso a bases de datos con MySQL y ODBC desde PHP Pablo Lledó Rovira

ProfundizandoProfundizando

OperaciónOperación Ejemplo ODBC (extraer datos de resultado):Ejemplo ODBC (extraer datos de resultado):

<?<?

......

while ($fila = odbc_fetch_row($resultado)){ while ($fila = odbc_fetch_row($resultado)){

echo (“$fila[0], $fila[1]”); echo (“$fila[0], $fila[1]”);

} } Diagrama de flujoDiagrama de flujo

......

?>?>

En ambos casos, también podemos acceder a losEn ambos casos, también podemos acceder a los

datos, en vez de ‘$fila[entero]’, usando el datos, en vez de ‘$fila[entero]’, usando el

identificador de la columna de la BD. Ejemplo:identificador de la columna de la BD. Ejemplo:

odbc_result($Resultado, ‘nombreColumna');odbc_result($Resultado, ‘nombreColumna');

mysqli_result($Resultado, ‘nombreColumna'); mysqli_result($Resultado, ‘nombreColumna');

Acceso a bases de datos con MySQL y ODBC desde PHPAcceso a bases de datos con MySQL y ODBC desde PHP

Page 16: Acceso a bases de datos con MySQL y ODBC desde PHP Pablo Lledó Rovira

ProfundizandoProfundizando

DesconexiónDesconexión Cuando nos conectamos a una BD y extraemos datos Cuando nos conectamos a una BD y extraemos datos

estamos consumiendo recursos del servidor. Si no cerramos estamos consumiendo recursos del servidor. Si no cerramos convenientemente la conexión y las consultas no liberamos convenientemente la conexión y las consultas no liberamos la memoria que consumen. Este “error”, multiplicado por el la memoria que consumen. Este “error”, multiplicado por el numero de peticiones de clientes a la BD, puede ocasionar numero de peticiones de clientes a la BD, puede ocasionar problemas con el buen funcionamiento del servicio WEB.problemas con el buen funcionamiento del servicio WEB.

Por tanto, se recomienda encarecidamente liberar Por tanto, se recomienda encarecidamente liberar dichos recursos con los siguientes métodos.dichos recursos con los siguientes métodos.

MétodosMétodos: mysqli_free_result -> libera recursos de una : mysqli_free_result -> libera recursos de una consultaconsulta

mysqli_close -> cierra la conexión con la mysqli_close -> cierra la conexión con la BDBD

Acceso a bases de datos con MySQL y ODBC desde PHPAcceso a bases de datos con MySQL y ODBC desde PHP

Page 17: Acceso a bases de datos con MySQL y ODBC desde PHP Pablo Lledó Rovira

ProfundizandoProfundizando

DesconexiónDesconexión

EjemploEjemplo:: ......

mysqli_free_result($resultado);mysqli_free_result($resultado);

mysqli_close($conexion);mysqli_close($conexion);

?>?>

Acceso a bases de datos con MySQL y ODBC desde PHPAcceso a bases de datos con MySQL y ODBC desde PHP

Page 18: Acceso a bases de datos con MySQL y ODBC desde PHP Pablo Lledó Rovira

FuncionesFunciones

En MySQL o ODBC existen una gran En MySQL o ODBC existen una gran cantidad de funciones para operar cantidad de funciones para operar con bases de datos que nos facilitan con bases de datos que nos facilitan enormemente el trabajo. Solo se enormemente el trabajo. Solo se mostrara las mas importantes, para mostrara las mas importantes, para mas información consultar en la Web mas información consultar en la Web oficial de PHP en: www.php.netoficial de PHP en: www.php.net

Acceso a bases de datos con MySQL y ODBC desde PHPAcceso a bases de datos con MySQL y ODBC desde PHP

Page 19: Acceso a bases de datos con MySQL y ODBC desde PHP Pablo Lledó Rovira

FuncionesFunciones

Debido a que prácticamente la única Debido a que prácticamente la única diferencia en la sintaxis es el uso de diferencia en la sintaxis es el uso de “mysqli <-> odbc”, los sustituiremos por x.“mysqli <-> odbc”, los sustituiremos por x.

x_columns ->  Devuelve información sobre nombres de columnas.x_columns ->  Devuelve información sobre nombres de columnas. x_tables -> Devuelve información sobre nombres de tablas. x_tables -> Devuelve información sobre nombres de tablas. x_data_source -> Devuelve información sobre el origen de datos actual.x_data_source -> Devuelve información sobre el origen de datos actual. x_error -> Devuelve el ultimo código de error.x_error -> Devuelve el ultimo código de error. x_errormsg -> Devuelve el ultimo mensaje de error.x_errormsg -> Devuelve el ultimo mensaje de error. x_num_fields ->  Devuelve el número de columnas de un resultado. 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_num_rows -> Devuelve el número de filas de un resultado. x_result -> Obtiene los datos 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_array ->  Devuelve los datos de un resultado en un array. x_fetch_object ->  Devuelve los datos de un resultado en variable de x_fetch_object ->  Devuelve los datos de un resultado en variable de

tipo objeto.tipo objeto.

Acceso a bases de datos con MySQL y ODBC desde PHPAcceso a bases de datos con MySQL y ODBC desde PHP

Page 20: Acceso a bases de datos con MySQL y ODBC desde PHP Pablo Lledó Rovira

EjemplosEjemplos

Ejemplos orientativos completos de acceso a base de Ejemplos orientativos completos de acceso a base de datos.datos.

MySQLMySQL <? <?

@$transportes = @$transportes = mysqli_connectmysqli_connect(‘localhost’,’usuario’,’password’,’transportes’);(‘localhost’,’usuario’,’password’,’transportes’);

ifif (!$transpotes){ (!$transpotes){

echo (‘echo (‘Error. No se ha podido conectar con la base de datosError. No se ha podido conectar con la base de datos’);’);

}}elseelse{ // conectado!{ // conectado!

@$empleados = @$empleados = mysqli_querymysqli_query($transportes,’SELECT * FROM empleados’);($transportes,’SELECT * FROM empleados’);

ifif (!$empleados){ (!$empleados){

echo (‘echo (‘Error. No se ha podido realizar la consultaError. No se ha podido realizar la consulta’);’);

}}elseelse{ // datos obtenidos!{ // datos obtenidos!

whilewhile ( (mysqli_fetch_rowmysqli_fetch_row($empleados)){($empleados)){

echo (‘echo (‘Nombre:Nombre: ’ . ’ . mysqli_resultmysqli_result($empleados,Nombre’) . ‘<br/>’); ($empleados,Nombre’) . ‘<br/>’);

}}}}

mysqli_free_resultmysqli_free_result($empleados);($empleados);

mysqli_closemysqli_close($transportes);($transportes);

}}

?>?>

Acceso a bases de datos con MySQL y ODBC desde PHPAcceso a bases de datos con MySQL y ODBC desde PHP

Page 21: Acceso a bases de datos con MySQL y ODBC desde PHP Pablo Lledó Rovira

EjemplosEjemplos

ODBCODBC <? <?

@$transportes = @$transportes = odbc_connectodbc_connect(‘localhost’,’usuario’,’password’,’transportes’);(‘localhost’,’usuario’,’password’,’transportes’);

ifif (!$transpotes){ (!$transpotes){

echo (‘echo (‘Error. No se ha podido conectar con la base de datosError. No se ha podido conectar con la base de datos’);’);

}}elseelse{ // conectado!{ // conectado!

@$empleados = @$empleados = odbc_execodbc_exec($transportes,’SELECT nombre FROM empleados’);($transportes,’SELECT nombre FROM empleados’);

ifif (!$empleados){ (!$empleados){

echo (‘echo (‘Error. No se ha podido realizar la consultaError. No se ha podido realizar la consulta’);’);

}}elseelse{ // datos obtenidos!{ // datos obtenidos!

whilewhile ( (odbc_fetch_rowodbc_fetch_row($empleados)){($empleados)){

echo (‘echo (‘Nombre:Nombre: ’ . ’ . odbc_resultodbc_result($empleados,nombre’) . ‘<br/>‘); ($empleados,nombre’) . ‘<br/>‘);

}}}}

odbc_free_resultodbc_free_result($empleados);($empleados);

odbc_closeodbc_close($transportes);($transportes);

}}

?> ?>

Acceso a bases de datos con MySQL y ODBC desde PHPAcceso a bases de datos con MySQL y ODBC desde PHP

Page 22: Acceso a bases de datos con MySQL y ODBC desde PHP Pablo Lledó Rovira

BibliografíaBibliografía

http://www.pecesama.net/php/odbc.phphttp://www.pecesama.net/php/odbc.php http://es.wikipedia.org/wiki/Mysqlhttp://es.wikipedia.org/wiki/Mysql http://es.wikipedia.org/wiki/DSNhttp://es.wikipedia.org/wiki/DSN http://es.wikipedia.org/wiki/ODBChttp://es.wikipedia.org/wiki/ODBC Desarrollo web con PHP 5 y MySQL - Desarrollo web con PHP 5 y MySQL -

Ed.AnayaEd.Anaya

Acceso a bases de datos con MySQL y ODBC desde PHPAcceso a bases de datos con MySQL y ODBC desde PHP