Publicado el 16 de Julio del 2018
2.247 visualizaciones desde el 16 de Julio del 2018
893,4 KB
79 paginas
Creado hace 9a (22/05/2015)
TECNOLOGICO NACIONAL DE MEXICO
CAMPUS TUXTEPEC
ASIGNATURA:
Programación web avanzada
CARRERA:
Ingeniería en Informática
SEMESTRE: 10to. GRUPO: A
CATEDRATICO:
M.S.C. Víctor Manuel Evaristo Salinas
UNIDAD:
IIII
PRESENTA:
Ricardo Vázquez Pavón
Mayo del 2015, San Juan Bautista Tuxtepec, Oaxaca
Introduccion
Las funciones de acceso a base de datos en PHP no estan estandarizadas. Esto requiere una
libreria que esconda las diferencias entre cada API de base de datos (encapsular las diferencias)
para que podamos cambiar facilmente de base de datos. Se requiere la version de PHP 4.0.5 o
posterior (debido a que usamos la funcion str_replace con arreglos).
Actualmente manejamos MySQL, Oracle, Microsoft SQL Server, Sybase, Sybase SQL
Anywhere, Informix, PostgreSQL, FrontBase, SQLite, Interbase (versiones de Firebird y
Borland), Foxpro, Access, ADO, DB2, SAP DB and ODBC. Tenemos noticias que se puede
conectar a Progress y CacheLite via ODBC. Esperamos que mas personas contribuyan con
drivers para manejar mas base de datos.
PHP4 maneja variables de sesion. Puedes almacenar la informacion de tu sesion usando ADOdb
para tener una verdadera portabilidad y escalabilidad. Para mas informacion ve el archivo adodb-
session.php.
Tambie lee tips_portable_sql-es.htm (tambien dispobible en ingles en el archivo
tips_portable_sql.htm) para consejos para escribir enunciados SQL portables.
Caracteristicas especiales de ADOdb
Facil para programadores Windows debido a que muchas de las convenciones son
similares al ADO de Microsoft.
A diferencia de otras clases PHP de base de datos que se enfocas unicamente en el
enunciado SELECT. ADOdb soporta codigo para manajar INSERT y UPDATE que
son rapidamente adaptables a multiples bases de datos. Tambien hay metodos para
manejo de fechas, concatenacion de cadenas y encomillado de cadenas para diferentes
bases de datos.
Tiene un systema de metatipos (metatype) para poder determinar cuales tipos como
CHAR, TEXT and STRING son equivalentes en diferentes bases de datos.
Es facil de portar debido a que todo el codigo que depende de la base de datos esta en
funciones. Tu no tienes que portar la logica principal de las clases.
Creacion de tablas e indices portable con las clases de diccionario de datos datadict.
Monitor de rendimiento de base de datos y ajuste de enunciados SQL con la clase de
performance monitoring.
Sesiones en base de datos con la clase session management. Maneja notificacion por
sesion vencida.
Mapeo a Objectos Relacionales uando la clase ADOdb_Active_Record.
Como se esta usando ADOdb
Aqui hay algunos ejemplos de personas que usan ADOdb (para una lista mas larga, visita
http://adodb.sourceforge.net/):
PhpLens es un componente comercial de cudricula de datos que permite tanto a
programadores expertos como a inexpertos desarrollar y mantener bases de datos en la
Web facilmente. Desarrollado por el autor de ADOdb.
PHAkt: PHP Extension for DreamWeaver Ultradev permite hacer programas PHP en el
popular editor de paginas Web. El manejo de la base de datos es con ADOdb.
Analysis Console for Intrusion Databases (ACID): Motor de analisis para buscar y
procesar una base de datos de incidentes de seguridad generada por otros programas
como IDSes y firewalls (e.g. Snort, ipchains). Por Roman Danyliw.
PostNuke es una sistema de control de contenidos muy popular. Maneja un soporte
completo de CSS, cumple con HTML 4.01, un sistema avanzado de bloques, y es
completamente multilenguaje.
EasyPublish CMS es otro sistema de control de contenidos. Para el manejo de
informacion y modulos integrados para tu internet, intranet y extranet. Noruego.
NOLA es una apliacion completa de contabilidad, inventarios y control de trabajo. Su
licencia es GPL, desarrollado por Noguska.
Solicitud de mejoras y reporte de fallas
Las solicitudes de mejoras o reporte de fallas pueden ser enviadas por correo electronico a
jlim#natsoft.com.my o publicadas en el foro de ayuda de ADOdb en
http://phplens.com/lens/lensforum/topics.php?id=4.
Guia de Instalacion
Asegurate de estar usando PHP 4.0.5 o posterior. Descomprime todos los archivos en un
directorio accesible por tu servidor Web.
Para probar, intenta modificar algunos de los ejemplos del tutorial. Asegurate de corregir los
parametros de coneccion a tus necesidades. Puedes depurar el codigo usando $db->debug = true
como se muestra a continuacion:
<?php
?>
include('adodb/adodb.inc.php');
$db = ADONewConnection($dbdriver); # eg 'mysql' o 'postgres'
$db->debug = true;
$db->Connect($servidor, $usuario, $contraseña, $database);
$rs = $db->Execute('select * from alguna_tabla_pequeña');
print "<pre>";
print_r($rs->GetRows());
print "</pre>";
Instalacion Minima
Para los desarrolladores que quieran distribuir una version minima de ADOdb, se requieren los
siguientes archivos:
adodb.inc.php
adodb-lib.inc.php
adodb-time.inc.php
drivers/adodb-$database.inc.php
license.txt (por razones legales)
adodb-php4.inc.php
adodb-iterator.inc.php (funcionaldiad para PHP5)
Opcionalmente:
adodb-error.inc.php y lang/adodb-$lang.inc.php (si usas MetaError())
adodb-csvlib.inc.php (si usas recordsets en memoria - CacheExecute(), etc)
adodb-exceptions.inc.php y adodb-errorhandler.inc.php (si usas el manejo de errores de
ADOdb o excepciones de PHP5).
adodb-active-record.inc.php si usas Active Records.
Ejemplos de Codigo de Inicio
Al ejecutar ADOdb, al menos se cargan dos archivos. Primero adodb/adodb.inc.php, que
contienen todas las funciones usadas por todas las clases de bases de datos. El codigo especifico
a una base de datos en particular esta en el archivo adodb/driver/adodb-????.inc.php.
Por ejemplo, para conectarse a una base de datos mysql:
include('adodb/adodb.inc.php');
$conn = &ADONewConnection('mysql');
Cada vez que necesitas conectarte a una base de datos, debes de crear un objeto de conexion
usando la funcion ADONewConnection($driver). NewADOConnection($driver) es un nombre
alterno para la misma funcion.
En este momento, no estas conectado a la base de datos (ya no es cierto si como parametro usas
un dsn). Primero tienes que decidir si vas a usar una coneccion persistente o no persistente. La
ventaja de las conexiones persistentes es que son mas rapidas, debido a que la conexion no es
cerrada nunca (aun si usas Close()). Las conexiones No persistentes consumen menos recursos
reduciendo el riesgo de sobrecargar la base de datos o el servidor Web.
Para conexiones persistentes, usa $conn->PConnect(), o $conn->Connect() para conexiones no
persistentes. Algunas bases de datos tambien manejan NConnect(), la cual forza la creacion de
una nueva conexion.
Problemas con Conexiones: Si creas dos conexiones, pero ambas usan el mismo usuario y
contraseña, PHP compartira las conexiones. Esto puede causar problemas si se supone que las
conexiones son a diferentes bases de datos. La solucion es usar siempre diferentes usuarios para
diferentes bases de datos o usar NConnect().
Soporte a Data Source Name (DSN)
Desde la version 4.51 de ADOdb, te puedes conectar a la base de datos pasando como argumento
a NewADOConnection() (o ADONewConnection, que es la misma funcion) un dsn. El formato
del dsn es:
$driver://$username:$password@hostname/$database?options[=value]
NewADOConnection() llama a Connect() o PConnect() internamente por ti. Si la conexion falla,
te regresa false.
# Conexion no persistente
$dsn = 'mysql://root:pwd@localhost/mydb';
$db = NewADOConnection($dsn);
if (!$db) die("Conexion incorrecta");
# no se requiere llamar connect/pconnect!
$arr = $db->GetArray("select * from table");
# conexion persistente
$dsn2 = 'mysql://root:pwd@localhost/mydb?persist';
Si tienes caracteres especiales como /:?_ en tu dsn, entonces tienes que invocar a rawurlencode
primero:
$pwd = rawurlencode($pwd);
$dsn = "mysql://root:$pwd@localhost/mydb";
$dsn2=rawurlencode("sybase_ase")."://user:pass@host/path?query";
Las opciones permitidas son:
Para todas los drivers 'persist', 'persistent', 'debug', 'fetchmode', 'new'
Interbase/Firebird
'dialect','charset','buffers','role'
M'soft ADO
'charpage'
MySQL
MySQLi
Oci8
'clientflags'
'port', 'socket', 'clientflags'
'nls_date_format','charset'
Para todos los drivers, cuando se activa la opcion persist o persistent, se forza una
conexionpersistente; asi mismo, cuando se activa new, entonces la conexion se creara usando
NConnect si el driver lo maneja. La opcion debug habilita la depuracion. La opcion fetchmode
invoca SetFetchMode(). Si no se le indica el valor a alguna oopcion se asume el valor de 1.
La version DSN de ADOdb DSN es compatible con el formato de la version 1.0 de PEAR DB.
Ejemplos de Conexion a Bases de Datos
MySQL y la mayoria de bases de datos
Las conexiones a MySQL son muy sencillas, y los parametros son identicos a mysql_connect:
$conn = &ADONewConnection('mysql');
$conn->PConnect('localhost','usuario','contraseña','database');
# o dsn
$dsn = 'mysql://user:pwd@localhost/mydb';
$conn = ADONewConnection($dsn); # no necesita Connect()
# o dsn persistente
$dsn = 'mysql://user:pwd@localhost/mydb?persist';
$conn = ADONewConnection($dsn); # no necesita PConnect()
# un ejemplo mas complejo:
$pwd = urlencode($pwd);
$flags = MYSQL_CLIENT_COMPRESS;
$dsn = "mysql://user:$pwd@localhost/mydb?persist&clientflags=$flags";
$conn = ADONewConnection($dsn); # no need for PConnect()
La may
Comentarios de: Programación web avanzada III (0)
No hay comentarios