MANUAL DE ODBC PARA PHP (by darknight)

Anuncio
MANUAL DE ODBC PARA PHP (by darknight)
MANUAL DE ODBC PARA PHP ........................................................................................ 1
INTRODUCCIÓN................................................................................................................... 1
¿Cómo, Cuándo y por qué usar ODBC? ................................................................................ 1
Conexión a Bases de Datos .................................................................................................... 2
Realizar una consulta ............................................................................................................. 3
Obtener los datos de una consulta ......................................................................................... 3
Número de filas y número de campos de una consulta .......................................................... 4
Relación entre nombre de campo y número de columna........................................................ 5
Otras funciones interesantes .................................................................................................. 5
Ejemplos prácticos ................................................................................................................. 5
Insertar un registro en la Base de Datos. ............................................................................ 5
Actualizar un registro de la Base de Datos. ........................................................................ 6
Eliminar un registro de la Base de Datos. .......................................................................... 7
Conclusiones Finales.............................................................................................................. 7
INTRODUCCIÓN.
Este es un breve manual dónde intentaré explicar como usar ODBC en PHP,
intentaré no divagar demasiado e ir directamente a los casos prácticos. Espero que os sea de
ayuda.
En este manual al referirme a ODBC, me refiero a las instrucciones con que PHP
permite manejar un DSN de sistema que acceda a una base de datos de cualquier tipo, se da
por supuesto que este DSN de sistema está correctamente configurado, apuntando a la base
de datos deseada y con el controlador correcto para esta BD.
Las instrucciones ODBC que se pueden utilizar con PHP, son muchas y muy
sencillas, permitiéndonos de esta manera hacer todas las operaciones básicas necesarias
para manejar una BD.
¿Cómo, Cuándo y por qué usar ODBC?
Para empezar tres preguntas en una. Intentemos dar una explicación breve y global
que intente responder a las tres a la vez, eso si, sin ponernos demasiado puristas, y
aceptando cualquier otra opinión mejor formada.
Usaremos ODBC cuando tengamos que atacar una base de datos que no sea ninguna
de las que PHP maneja cómodamente, mediante instrucciones creadas específicamente para
dichas BD, es decir, PostgresSQL, MySQL, y Oracle 8, principalmente. Aunque PHP
también tenga instrucciones para otras BD.
PHP tiene un repertorio de instrucciones para manejar ODBC, que por su sencillez
hace, que una vez hemos aprendido a manejarlas correctamente nos resulte más sencillo
trabajar siempre con estás instrucciones que no con otras de PHP para una BD concreta,
ejemplo: INTERBASE. Si ya hemos aprendido a manejar una vez las instrucciones para
ODBC, al manejar una BD ACCESS, en vez de buscar las instrucciones para
INTERBASE, ver sus particularidades, el orden de los parámetros, el número de estos, etc.,
etc., pues podemos definir un DSN de sistema para acceder a la BD de INTERBASE, y
atacar esta con las mismas instrucciones que ya conocemos. Por supuesto, esto tiene sus
ventajas y sus inconvenientes, así que debe ser el diseñador el que tome la última decisión.
Para terminar con este apartado, decir que para mi ODBC, no es una manera mejor,
ni peor de acceder a una BD en concreto, es simplemente una opción más de la que
disponemos.
Conexión a Bases de Datos
Para conectarnos a una base de datos, en general, necesitaremos la siguiente
información:





Equipo que alberga la base de datos
Usuario de la base de datos
Clave de la base de datos
Nombre de la base de datos
Puerto de la conexión
Como resultado de estos datos debemos obtener un identificador de conexión que se
utilizará posteriormente para realizar las distintas operaciones sobre la BD. Ahora
veremos como se lleva a cabo la operación de conexión con la BD.
(Los parámetros entre corchetes son opcionales)
$conexion = odbc_connect($dsn, $usuario, $clave[,int tipo_cursor]);
$conexion: Variable que utilizaremos para hacer referencia a la conexión
establecida.
$dsn: Variable que contendrá el nombre del DSN. También podemos utilizar
directamente el nombre asignado a nuestro DSN entre comillas dobles.
Ej: “GESTION”
$usuario y $clave: Cómo sus nombres indican contendrán el nombre del usuario de
la BD y la clave de la BD de dicho usuario. También es posible utilizar estos
directamente encerrados entre comillas dobles.
Ej:
$conexion = odbc_connect("GESTION","usuario","clave") or die ("No se pudo
conectar con Gestión");
Una conexión persistente con ODBC se realizaría con:
$conexion = odbc_pconnect($dsn, $usuario, $clave[,int tipo_cursor]);
Con ODBC, al contrario que ocurre con MySQL, no es necesaria una segunda
instrucción para elegir la BD con la que vamos a trabajar ya que con el DSN, esta
queda perfectamente identificada.
Realizar una consulta
Usando la expresión, $res = odbc_exec($conexion, $consulta);
obtenemos un descriptor de los resultados de la consulta.
Un ejemplo más detallado de como utilizar odbc_exec, con todos los pasos a seguir
sería:
//En esta línea construimos la consulta SQL
$sqlcodfamilia = "select CODFAMILIA FROM FAMILIA WHERE DESCRIPCIO
= '$familia' ";
//Realizamos la consulta
$rescodfamilia = odbc_exec($conexion, $sqlcodfamilia) or die ("no se ha podido
realizar la consulta");
//Obtenemos el dato del campo deseado de la BD
$codfamilia = odbc_result($rescodfamilia, "CODFAMILIA");
//Liberamos el espacio de memoria ocupado
odbc_free_result($rescodfamilia);
Todas estás instrucciones las veremos en profundidad a lo largo de este manual.
Obtener los datos de una consulta
La instrucción para obtener una determinada fila de una consulta sería:
$fila = odbc_fetch_row($res[,$num_fila]);
Si omitimos $num_fila recupera la siguiente fila de la consulta. Si lo ponemos
recuperará ese número de fila.
Un ejemplo práctico:
//Construimos la consulta y la ejecutamos
$sqltipo="SELECT TIPODOC FROM DOCUMENTOS ORDER BY TIPODOC";
$restipo=odbc_exec($basedoc,$sqltipo);
//Este bucle recorre la consulta fila a fila, comprueba la condición e introduce los
//resultados de la consulta en un desplegable. Como podemos observar si la consulta
no tiene
//resultados nunca entraría en el bucle.
while(odbc_fetch_row($restipo))
{
$tipo=odbc_result($restipo, "TIPODOC");
if($tipodoc==$tipo)
{
echo "<option selected>$tipo</option>";
}
else
{
echo "<option>$tipo</option>";
}
}
echo "</select>”;
//Liberamos el espacio de memoria ocupado por la consulta
odbc_free_result ($restipo);
Número de filas y número de campos de una consulta
$num = odbc_num_rows($res);
Obtiene el número de filas obtenidas en una determinada consulta.
$num = odbc_num_fields($res);
Obtiene el número de campos obtenidos en una determinada consulta.
Relación entre nombre de campo y número de columna
El argumento $res de la función que se describe a continuación se supone que es un
descriptor de los resultados de una consulta,
válido obtenido mediante una consulta previa.
$nombre_campo = odbc_field_name($res, $num_campo);
Devuelve en $nombre_campo, el nombre del campo de la BD, que esté en el
número de columna indicada en $num_campo en el resultado de una consulta.
Otras funciones interesantes
Como hemos visto en un ejemplo anterior para obtener el valor de un campo de una
consulta, bastará con esta instrucción:
odbc_result($res, $campo);
$campo, deberá contener el nombre del campo de la consulta cuyo valor se desea
obtener. Se puede utilizar directamente el nombre del campo, encerrado entre
comillas dobles.
Para liberar el espacio de memoria ocupado por una consulta utilizaremos:
odbc_free_result($res);
Para cerrar la conexión con una base de datos utilizaremos:
odbc_close($conexion);
Es muy importante distinguir entre el descriptor de la consulta y el descriptor de la
conexión, ya que son cosas totalmente distintas. Nos evitaremos muchos problemas si
ponemos nombres significativos a nuestras variables.
Ejemplos prácticos
Insertar un registro en la Base de Datos.
<?
//Establece una conexión con la BD y lanza un mensaje de error en el caso de que
esta no se haya realizado con éxito
$conexion = ODBC_CONNECT("GESTION","USUARIO","jr4582") or die ("No
se pudo conectar con Gestión");
//Inserta un registro en nuestra BD, en los campos indicados, con los valores que
contengan las variables indicadas en la cláusula VALUES
$sqlinsert ="INSERT INTO DOCUMENTOSFICHA (INDICE, DESCRIPCION,
USUARIOALTA, FECHAALTA, USUARIOMOD, FECHAMOD,
REF, AMPDESCRI, EMPRESA, RUTAACCESO, TIPODOC)
VALUES ($indice, '$descripcion', '$cusuario', DATE(), '$cusuario', DATE(),
'$referencia', '$observaciones', '$cempresa', '$ficherogz', '$tipo')";
odbc_exec($conexion, $sqlinsert);
//Cierra la conexión con la BD y después de esto nos lleva a la página indicada en la
instrucción header();
odbc_close($conexion);
header("Location:principal.php");
?>
Actualizar un registro de la Base de Datos.
<?
//Establece una conexión con la base de datos y arroja un error, si esta no se ha
realizado //con éxito
$conexion = ODBC_CONNECT("GESTION","usuario","clave”) or die ("No se
pudo conectar con Gestión");
//Actualiza una fila de nuestra Base de Datos tal y como se indica en la instrucción
SQL
$sqlUpd="UPDATE FICHADOC
SET DESCRIFICHA='$descripcion', REF='$referencia',
TIPODOC='$tdoc', AMPDESCRI='$observaciones'
WHERE INDICE=$indice";
$res=odbc_exec($conexion, $sqlUpd) or die ("La actualización ha fallado");
//Después de ejecutar la instrucción volvemos a una página determina por el
desarrollador
header("Location:principal.php");
Eliminar un registro de la Base de Datos.
<?
// Establece una conexión con nuestra BD, arroja un error si esta no se ha realizado
//correctamente, y la instrucción SQL borra el registro de la base de datos que
coincida con
//el valor de la variable $indice en la tabla FICHADOC
$conexion = ODBC_CONNECT("GESTION","USUARIO","CLAVE") or die
("No se pudo conectar con Gestión");
$sql="DELETE FROM FICHADOC WHERE INDICE=$indice";
odbc_exec($conexion,$sql);
//Después de ejecutar la instrucción volvemos a una página determina por el
desarrollador
header("Location:principal.php");
?>
Conclusiones Finales
Casi siempre podremos utilizar ODBC, para comunicarnos con una Base de Datos
de cualquier tipo, así que estas instrucciones, se puede decir, que son las más genéricas para
la interacción con una BD y por lo tanto nos permiten obviar el tipo de la Base de Datos,
con la que estemos trabajando, así como sus particularidades, lo cual en algunos momentos,
sin duda, es una gran ventaja, y quizá nuestra mejor opción.
Para intentar sacar el máximo partido a este breve manual, es recomendable que si
aún no tenemos suficientes conocimientos de SQL busquemos un buen manual de SQL,
que al fin y al cabo es el lenguaje que nos permitirá comunicarnos con la BD.
Este manual es un primer acercamiento al manejo de BD mediante ODBC, y
aunque como siempre la mejor manera de aprender es practicando, quizá estos pequeños
ejemplos os ahorren mucho tiempo y trabajo, al menos esa es la intención. Perdonad los
posibles errores.
Descargar