Está en la página 1de 11

Nro.

DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 05 - PHP Parte II
Página 1

I. OBJETIVOS

○ Hacer un uso correcto de PDO para la comunicación con una base de datos.
○ Crear páginas web y scripts de PHP que permitan implementar las operaciones CRUD sobre una
base de datos.

II. SEGURIDAD

Advertencia:
En este laboratorio está prohibida la manipulación de hardware, conexiones
eléctricas o de red; así como la ingestión de alimentos o bebidas.

III. NORMAS EMPLEADAS


○ No aplica

IV. RECURSOS
○ En el siguiente laboratorio se trabajará con un equipo que cuente VMWare Player (mínimo versión
14) o acceso a AWS.

V. METODOLOGÍA PARA EL DESARROLLO DE LA TAREA


○ El desarrollo del laboratorio es grupal (3 personas).
Nro. DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 05 - PHP Parte II
Página 2

VI. MARCO TEÓRICO

Conexiones y Administración en PDO

● Las conexiones se establecen creando instancias de la clase base PDO. No importa el controlador
que se utilice; siempre se usará el nombre de la clase PDO. El constructor acepta parámetros
para especificar el origen de la base de datos (conocido como DSN) y, opcionalmente, el nombre
de usuario y la contraseña (si la hubiera).
● Si hubieran errores de conexión, se lanzará un objeto PDOException. Se puede capturar la
excepción si fuera necesario manejar la condición del error, o se podría optar por dejarla en
manos de un manejador de excepciones global de aplicación configurado mediante
set_exception_handler().
● Una vez realizada con éxito una conexión a la base de datos, será devuelta una instancia de la
clase PDO al script. La conexión permanecerá activa durante el tiempo de vida del objeto PDO.
Para cerrar la conexión, es necesario destruir el objeto asegurándose de que todas las referencias
a él existentes sean eliminadas; esto se puede hacer asignando NULL a la variable que contiene el
objeto. Si no se realiza explícitamente, PHP cerrará automáticamente la conexión cuando el script
finalice.

Transacciones y Auto-Commit

● Una vez realizada una conexión a través de PDO, es necesario comprender cómo PDO gestiona
las transacciones antes de comenzar a realizar consultas. Para aquellos que no han manejado
anteriormente transacciones, estas ofrecen cuatro características principales: Atomicidad,
Consistencia, Aislamiento y Durabilidad (ACID por sus siglas en inglés). En términos sencillos, se
garantiza que cualquier trabajo llevado a cabo en una transacción, incluso si se hace por etapas,
Nro. DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 05 - PHP Parte II
Página 3

sea aplicado a la base de datos de forma segura, y sin interferencia de otras conexiones, cuando
sea consignado. El trabajo transaccional puede también ser deshecho automáticamente bajo
petición (siempre y cuando no se haya consignado ya), lo que hace más sencillo el manejo de
errores en los scripts.
● Una transacción se implementa normalmente para hacer que el lote de cambios se apliquen a la
vez. Esto tiene el buen efecto secundario de mejorar drásticamente la eficiencia de las
actualizaciones. En otras palabras, las transacciones pueden hacer los scripts más rápidos y
potencialmente más robustos (aún así es necesario utilizarlas correctamente para obtener tal
beneficio).
● Desafortunadamente, no todas las bases de datos admiten transacciones, por lo que PDO
necesita ejecutarse en lo que es conocido como el modo "auto-commit" cuando se abra por
primera vez la conexión. El modo auto-commit significa que toda consulta que se ejecute tiene su
propia transacción implícita, si la base de datos la admite, o ninguna transacción si la base de
datos no las admite.
● Para iniciar una transacción, si fuera necesario, se debe usar el método
PDO::beginTransaction(). Si el controlador subyacente no admite transacciones, se lanzará
una PDOException (independientemente de la configuración del manejo de errores: esto es
siempre una condición de error serio). Una vez dentro de una transacción, se puede utilizar
PDO::commit() o PDO::rollBack() para finalizar, dependiendo del éxito del código que se
ejecute durante la transacción.
Nro. DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 05 - PHP Parte II
Página 4

Sentencias Preparadas

● Muchas de las bases de datos más maduras admiten el concepto de sentencias preparadas.
Estas pueden definirse como un tipo de plantillas compiladas para SQL que las aplicaciones
quieren ejecutar, pudiendo ser personalizadas utilizando parámetros variables. Las sentencias
preparadas ofrecen dos grandes beneficios:
○ La consulta sólo necesita ser analizada (o preparada) una vez, pero puede ser ejecutada
muchas veces con los mismos o diferentes parámetros. Cuando la consulta se prepara, la
base de datos analizará, compilará y optimizará su plan para ejecutarla. Para consultas
Nro. DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 05 - PHP Parte II
Página 5

complejas, este proceso puede tomar suficiente tiempo como para ralentizar notablemente
una aplicación si fuera necesario repetir la misma consulta muchas veces con los mismos
parámetros. Mediante el empleo de una sentencia preparada, la aplicación evita repetir el
ciclo de análisis/compilación/optimización. Esto significa que las sentencias preparadas
utilizan menos recursos y se ejecutan más rápidamente.
○ Los parámetros para las sentencias preparadas no necesitan estar entrecomillados; el
controlador automáticamente se encarga de esto. Si una aplicación usa exclusivamente
sentencias preparadas, el desarrollador puede estar seguro de que no hay cabida para
inyecciones de SQL (sin embargo, si otras partes de la consulta se construyen con datos de
entrada sin escapar, aún es posible que ocurran ataques de inyecciones de SQL).

● Las sentencias preparadas son tan útiles que son la única característica que PDO emulará para
los controladores que no las soporten. Esto asegura que una aplicación sea capaz de emplear el
mismo paradigma de acceso a datos independientemente de las capacidades de la base de datos.
● Ejemplo 1: Este ejemplo realiza dos consultas INSERT sustituyendo name y value por los
marcadores correspondientes.

● Ejemplo 2: Este ejemplo realiza dos consultas INSERT sustituyendo name y value por los
marcadores posicionales '?'.
Nro. DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 05 - PHP Parte II
Página 6

● Ejemplo 3: Este ejemplo obtiene datos basándose en un valor de clave proporcionado por un
formulario. La entrada del usuario es entrecomillada automáticamente, con lo cual no hay riesgo
de un ataque por inyección de SQL.
Nro. DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 05 - PHP Parte II
Página 7

VII. PROCEDIMIENTO
● Se tiene los siguientes requerimientos para crear una base de datos para una empresa que se dedica
al alquiler de espacios para distintos tipos de eventos:
○ Para colocar a los invitados se dispone de numerosas salas.
○ Cada sala contará con su propio código, que es único. También interesa conocer su capacidad.
○ Cada sala cuenta con varias mesas. Cada mesa tiene un número que las distingue de otras
mesas dentro de la sala, aunque puede encontrarse mesas con el mismo número en salas
diferentes.
○ Para cada mesa interesa conocer su capacidad, así como en qué sala está situada.
○ Cada invitado se sentará junto a otros invitados en una mesa.
○ De cada invitado nos interesa conocer su DNI, nombres, apellidos y su dirección.
○ Se debe registrar los datos de los mozos. De cada mozo se desea registrar su DNI y su nombre.
○ Un mozo puede atender varias mesas y además es común que una mesa sea atendida por varios
mozos para agilizar el trabajo
○ La asignación de un mozo a una mesa tiene una hora de inicio y una de fin
○ Los invitados traen regalos, por lo que es necesario registrar que invitado trajo qué regalo. Es
normal que algunos invitados puedan traer varios regalos, pero todos traerán al menos uno.
○ Se asume que cada regalo corresponderá a un único invitado.

● Se debe crear el diagrama entidad relación (notación de Martin y notación patas de gallo) de una base
de datos que cumpla con los requerimientos dados.

● Se deberá crear un script SQL que permita crear la base de datos en MySQL (se puede utilizar
MySQL Workbench para la creación del script).
Enviamos el script con este documento.
Nro. DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 05 - PHP Parte II
Página 8

● Con la base de datos creada, se deberá crear otro script SQL que permita poblar la base de datos
para tener información de prueba.
Enviamos el script con este documento.

● Se creará páginas web que permitan interactuar con la información de la base de datos (funciones
CRUD), por lo que se requiere que se brinde bosquejos del diseño inicial de dichas páginas.
Enviamos el bosquejo con este documento.

● Las páginas web deben ser adaptativas.


● Para implementar la funcionalidad se deberá emplear PHP y su extensión PDO siguiendo una
programación orientada a objetos.

Integrantes:
- Bonilla Hancco Nikoll Belen
- Layme Castilla Yeshua Josue
- Carbajal Valdivia Yonela Isamar
Nro. DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 05 - PHP Parte II
Página 9

VIII. OBSERVACIONES
● Las transacciones hacen que un trabajo sea aplicado a la base de datos de forma segura.
● Las transacciones hacen más sencillo el manejo de errores en los scripts.
● Las sentencias preparadas no necesitan tener parámetros entrecomillados.
● Las sentencias separadas permiten que una consulta sólo necesite ser analizada una vez, pero ser
ejecutada muchas veces.

IX. CONCLUSIONES
● Las transacciones ofrecen cuatro características principales: Atomicidad, Consistencia, Aislamiento y
Durabilidad.
● Una sentencia preparada se usa para ejecutar la misma sentencia repetidamente con gran eficiencia.
Nro. DD-106
Desarrollo de Aplicaciones en Internet
Laboratorio 05 - PHP Parte II
Página 10

X. REFERENCIAS
- MySQL: MySQL Workbench. (22021). MySQL. https://www.mysql.com/products/workbench/

También podría gustarte