PHP y Acceso a Datos

Documentos relacionados
Creando CRUD en PHP: operaciones básicas para la gestión de bases de datos

CESAR BUSTAMANTE

PHP Avanzado - Información tabulada -

Paginación de Consultas con Oracle y PHP

Acceso a datos desde PHP (avanzado) Múltiples submits a PHP, control, gestión de errores, visualización, jquery, datatables, AJAX

PHP y MySQL Domine el desarrollo de un sitio Web dinámico e interactivo (3ª edición)

PHP 7 Desarrollar un sitio web dinámico e interactivo

Introducción a PL/SQL

Objetivos y Temario CURSO PHP Y MySQL

Funciones de PHP con MySQL.

Cómo exportar datos a Excel utilizando PHP y MySQL

Desarrollo PHP con Webmatrix

Curso PHP & MYSQL PARA JOOMLA

Introducción al desarrollo web (idesweb) - 3 a ed.

PHP: Lenguaje de programación

Índice. Programación en Internet Curso Qué es? Interfaz orientado a objetos Sentencias preparadas. Programación en Internet

Curso de PHP. Acceso a bases de datos MySQL en PHP

Programación PHP de bases de datos mysql

TEMA 1.- Conceptos Generales y Entorno de Trabajo Objetivo

POW. Tema 8: Acceso a Base de Datos y Sesiones con PHP

PHP Avanzado - Listas enlazadas dinámicas -

Desarrollo Web con PHP y MySQL

SQL: Vistas, Triggers, y Procedimientos Almacenados

PHP 5.6 Desarrollar un sitio web dinámico e interactivo

PHP y MySQL. Aplicaciones Web: PHP y base de datos MySQL (décima parte) Autor: Johnny Zulca Mamani

Acceso a bases de datos desde Java: JDBC

APÉNDICE A: ACCESO A UNA BASE DE DATOS CON JDBC

Para procesar instrucciones SELECT que devuelvan más de una fila, son necesarios cursores explicitos combinados con un estructura de bloque.

Python desde Cero: Bases de Datos

Repaso. Laboratorio Informix. Stored Procedures. Ejemplo. Creación de stored procedures. Sql en un Procedimiento

A continuación se presenta la forma en que se puede conectar PHP con el gestor de bases de datos MySQL.

Laboratorio Informix. Stored Procedures Triggers

MAESTRO DE PHP PHP NIVEL 1

Introducción a la programación en PHP

Tópicos Avanzados de Programación (TAP3501)

7- PHP y consultas MySQL

APLICACIONES WEB PERL + BASES DE DATOS REQUERIMIENTO RESPUESTA

MySQL y Sesiones en PHP. Área de Ingeniería Telemática

Validación con Expresiones Regulares

PHP Y BASES DE DATOS. Introducción a SQL

El Lenguaje PL/SQL. Un lenguaje de propósito general orientado a la inclusión de sentencias SQL. Estructura del código PL/SQL.

MySQL por línea de comandos

VISUAL BASIC.NET. NIVEL COMPLETO

Facultad de Ingeniería UNMdP

Objetivos y Temario CURSO MySQL 5

Acceso a bases de datos desde Java: JDBC

Práctica 02. Formularios

Integración script de servidor con los sistemas gestores de base de datos

MASTER DE PHP es el curso más completo diseñado para que aprendas desde 0 hasta poder desarrollar aplicaciones robustas utilizando Frameworks.

Conectar Flash con Access usando MDM Zinc

Conexión de Netbeans a MySQL

Visual Basic.net Completo

Creación de una aplicación de acceso a Base de Datos mediante ODBC

Visual Basic.net Completo

Base de Datos Conjunto de información organizada especialmente para búsqueda y entrada de datos. Base de Datos: Ejemplo Usuarios

En esta práctica se verá cómo crear una base de datos MySQL mediante el programa phpmyadmin y su posterior explotación a través de PHP.

4- Introducción a PHP

Creando una capa de abstracción con PHP y mysqli

Administración Base de Datos SQL

Visual Basic.NET Completo

GUÍA DE TRABAJO N 9 - LENGUAJES C# + SQL Educación Media Fortalecida Programación de Software GRADO 11 Ing. Néstor Raúl Suarez Perpiñan Página 1 de 8

Bloque I: Seguridad web

Manejo de Bases de Datos Mysql en Lenguaje C

Visual Basic.net. Duración: 60 horas. Modalidad: online. Contenidos

Unidad IV. Aplicaciones sobre Base de Datos

APUNTES: APLICACIONES WEB BASADAS EN PHP Y MYSQL Página 1 de 5

PHP. Introducción (1) Introducción (3) Introducción (2) PHP 1

SEMINARIO DE DQL CON PHP Y MYSQL

Programación PHP de bases de datos SQL Server

Iván López Rodríguez alu3194

GUÍA DE TRABAJO N 11 LENGUAJE C# Programación de Software Articulación SENA Grado 10 Ing. Néstor Raúl Suarez Perpiñan Página 2 de 11

Introducción al desarrollo web (idesweb)

TALLER PHP + POSTGRES (CONEXIÓN)

Diplomado Programación Web con PHP, MySQL 5.0, Apache y Ajax

Oracle Database 12c SQL and PLSQL Fundamentals

Base de Datos JDBC. Unidad: 1 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

De esta manera, cuando el usuario rellena un campo cómo el siguiente... <input type="text" name="telefono"> </form>

Transcripción:

PDO PHP y Acceso a Datos Departamento de Lenguajes y Sistemas Informáticos Grupo de Ingeniería del Software Introducción PDO SQL es el lenguaje común para trabajar con todas las BD Las interfaces que los programadores usan para trabajar con BDs varían mucho Dependencia de las aplicaciones respecto de la BD Para resolver estos problemas se necesitan capas de abstracción respecto de la BD (una interfaz común) Introducción a la Ingeniería del Software y a los Sistemas de Información 1 IISSI 1

Conceptos básicos: Objetos de Acceso a Datos PDO = Portable Data Objects PDO Es una librería proporcionada por PHP que permite acceder a diferentes bases de datos, cómo? PDO provee una capa de abstracción para el acceso a datos, lo que permite que nuestro código sea independiente de la BD que usemos El objeto más importante de PDO es precisamente PDO que representa una conexión con la BD PDO forma parte de la distribución PHP desde la versión v5.1 PDO PDODriver PDOException Parámetros Introducción a la Ingeniería del Software y a los Sistemas de Información 2 Objetos de Acceso a Datos PDO Actores: Proveedor de datos (PDO Specific Driver) Conexión (Objeto PDO) Base de Datos (MySQL, MS SQL Server, Oracle) tratamiento PDO PDO Specific Driver PDO Specific Driver 2 BD BD2 MS SQL MySQL Oracle Introducción a la Ingeniería del Software y a los Sistemas de Información 3 IISSI 2

El Objeto PDO PDO Definición del Objeto PDO: Este objeto representa una conexión con una base de datos, y nos permite ejecutar consultas y obtener sus resultados DEBEMOS INDICAR $host = Su 'oci:dbname=localhost/xe'; uso habitual es el siguiente: EL MODO DE ERROR $username = 'username'; DE EXCEPCIONES PARA $password = 'password'; QUE LAS LANCE!!! try { $con = new PDO($host,$username,$password); $con->setattribute(pdo::attr_errmode, PDO::ERRMODE_EXCEPTION); echo Conectados a la BD ; // Alguna operación sobre la BD // Cerramos la conexión $con = null; catch( PDOException $e ) { // tratamiento del error Si no capturamos la excepción, el servidor mostrará la traza incluyendo el usuario y password de la BD!!! echo error de conexión:. $e->getmessage(); Introducción a la Ingeniería del Software y a los Sistemas de Información 4 El Objeto PDO PDO Métodos de PDO: PDO( cadenaconexión, [usuario], [pwd], [opts]): abre la conexión con la BD: La cadena de conexión depende del tipo de BD Entre las opciones de configuración, podemos hacer persistente la conexión: $con = new PDO($host,$user,$pass, array(pdo::attr_persistent => true)); exec(sql): ejecuta una instrucción SQL (INSERT, UPDATE, DELETE) y devuelve el número de filas afectadas query(sql): ejecuta una consulta SQL ( SELECT ) y devuelve un objeto con los resultados prepare(sql): prepara una consulta SQL ( SELECT ) y devuelve un objeto para su posterior ejecución Introducción a la Ingeniería del Software y a los Sistemas de Información 5 IISSI 3

El Objeto Definición de : PDO try { Representa una sentencia preparada para su ejecución en la BD y tras su ejecución, el conjunto de resultados asociado. Hay dos alternativas: Query y Prepare // Se ejecuta directamente la consulta y devuelve resultados $stmt= $con->query("select " ); catch(pdoexception $e ) {// Tratamiento del error try { // Preparar la consulta si se va a repetir múltples veces $stmt = $con->prepare("select WHERE a=:data"); $stmt->bindparam(':data',$name); $stmt->execute(); catch(pdoexception $e ) { // tratamiento del error echo "error:. $e->getmessage(); Introducción a la Ingeniería del Software y a los Sistemas de Información 6 PDO El Objeto Métodos de : bindparam(parámetros): asocia un valor a los parámetros establecidos en la consulta execute(parámetros): ejecuta la consulta preparada usando los valores introducidos en el array parámetros rowcount(): Devuelve el número de filas afectadas por la consulta (no funciona en todas las BDs) columncount(): Devuelve el número de columnas $calories = 150; $colour = 'red'; $stmt = $con->prepare( 'SELECT name, colour, calories FROM fruit WHERE calories < :calories AND colour = :colour ); $stmt->execute(array(':calories' => $calories,':colour => $colour)); Introducción a la Ingeniería del Software y a los Sistemas de Información 7 IISSI 4

El Objeto Recorrido del (2 opciones): PDO // $stmt es un ya ejecutado foreach ($stmt as $fila) { echo $fila["campo1 ]; echo $fila["campon ]; // $stmt es un ya ejecutado $fila = $stmt->fetch(); while ($fila) { echo $fila["campo1"]; echo $fila["campon"]; $fila = $stmt->fetch(); fetch(): Devuelve la siguiente fila del resultado o false si es la última fila. Introducción a la Ingeniería del Software y a los Sistemas de Información 8 PDO Tratamiento de Errores Bloques try/catch en PHP con PDO: Todas las operaciones con objetos PDO pueden generar excepciones que deben capturarse El objeto que lanzan en las excepciones es de tipo PDOException, que es a su vez una subclase de Exception Exception tiene los siguientes métodos: getmessage(): devuelve el mensaje describe la excepción getfile(): fichero en que ocurrió el error getline(): línea en que ocurrió el error gettrace() y gettraceasstring(): devuelven la traza de ejecución en el momento del error del error en el bloque catch: El código habitual en el bloque catch es liberar recursos y avisar al usuario del error Introducción a la Ingeniería del Software y a los Sistemas de Información 9 IISSI 5

PDO Buenas Prácticas Modularidación del código cuando se trabaja con BD: Datos en Session formulario <% %> sí errores? no exito <% %> Lógica de Acceso a Datos Base de Datos Funciones Funciones gestión A gestión B func inserta(p1,p2){ func insertb(p1,p2){ var SQL = var SQL =..... Introducción a la Ingeniería del Software y a los Sistemas de Información Funciones gestión X func insertx(p1,p2){ var SQL =. 10 Buenas Prácticas PDO <% exito %> gestiónbd func conectarbd() { return $dbh; func desconectarbd() {? > Gestión de X func insertx($p1){ $dbh->.? > Recuperar los datos del formulario y anular los valores de la sesión Hacer el tratamiento de los datos (p.e. inserción en la BD) php session_start(); include_once( gestionbd.php ); include_once( gestionusuarios.php ); if (isset ($_SESSION[ formulario ]) { $formulario = $_SESSION["formulario ]; unset ($_SESSION["formulario ]); unset ($_SESSION["errores ]); else Header("Location:formulario.php"); $conexion = conectarbd(); <html> <head> <title>resultado del Registro</title></head> <body> if ( insertarusuario($formulario[ nombre ], $formulario[ direccion ], $conexion) { <div id="div_exito"> <h1>hola echo $formulario[ nombre ], gracias por registrarte</h1> </div> else { <div id= div_error_registro > Lo sentimos ya existe un usuario con su dirección. </div> <div id="div_volver"> Pulsa <a href="formulario.php">aquí</a> para volver al formulario. </div> </body> </html> desconectarbd($conexion); Introducción a la Ingeniería del Software y a los Sistemas de Información 11 IISSI 6

PDO Funciones de Gestión de X <% func insertx(p1,p2){ var SQL =. % > Implementar la lógica de acceso a datos de la aplicación para cada concepto del dominio: Inserción Modificación Eliminación Selección por diversos criterios Buenas Prácticas /* +-------------------------------------------+ Gestión de Usuarios +-------------------------------------------+ */ // Inserción: function insertarusuario($usuario, $direccion, $conexion){ $resultado=true; $usuarios=usuariospordireccion($direccion, $conexion); $fila = $usuarios->fetch(); if (!$fila){ $stmt = $conexion->execute( INSERT INTO Usuarios ); else $resultado=false; $fila = null; $usuarios=null; return $resultado; Este código no pertenecería realmente a la lógica de acceso a datos, sino a la lógica de negocio de la organización // Selección de usuarios por distintos criterios: function usuariospordireccion($direccion, $conexion){ $stmt = $conexion->prepare("select * FROM Usuarios WHERE direccion=:direccion ); $stmt->bindparam( :direccion,$direccion); $stmt->execute(); return $stmt; Introducción a la Ingeniería del Software y a los Sistemas de Información 12 Buenas Prácticas PDO Normalmente, los pasos a seguir para cada función de la capa de son: Construir la sentencia SQL [Opcional] Tratamiento y formateo de los parámetros. Obtener una conexión. Opciones: Creación y apertura directamente en la función Obtener la conexión de los contextos de Sesión o Aplicación Tratar la conexión como parámetro de cada función Ejecución del comando SQL [Opcional] Tratamiento (podría ser delegado en el código que llama la función para realizar un tratamiento más específico) Si abrimos la conexión debemos cerrarla Devolver los resultados si procede Introducción a la Ingeniería del Software y a los Sistemas de Información 13 IISSI 7

Comentarios y sugerencias PDO Introducción a la Ingeniería del Software y a los Sistemas de Información 14 IISSI 8