• No se han encontrado resultados

PROGRAMACION WEB I BASE DE DATOS MYSQL CON PHP

N/A
N/A
Protected

Academic year: 2021

Share "PROGRAMACION WEB I BASE DE DATOS MYSQL CON PHP"

Copied!
25
0
0

Texto completo

(1)

PROGRAMACION WEB I

BASE DE DATOS MYSQL CON PHP

(2)

Acceso a bases de datos MySQL en PHP

Bases de datos en la Web

Instalación y configuración de MySQL

MySQL

Herramientas de administración: phpMyAdmin

Lenguaje SQL

Funciones de PHP para el acceso a bases de datos MySQL

Ejercicios

Consulta avanzada de tablas

(3)

Ing. Jose L. Enriquez

•El usuario escribe la dirección de la página web en su navegador

•El navegador la solicita al servidor web correspondiente (este paso requiere la participación de máquinas intermedias que no se comentan aquí)

•El servidor lee el fichero que corresponde a esa página web

•El servidor envía el fichero al navegador

•El navegador muestra la página web al usuario

PAGINA WEB HTML

(4)

•El usuario escribe la dirección de la página web en su navegador

•El navegador la solicita al servidor web correspondiente (este paso requiere la participación de máquinas intermedias que no se comentan aquí)

•El servidor detecta que no es un documento ya existente sino que tiene que generarse, así que recurre al intérprete del lenguaje

•El intérprete del lenguaje ejecuta el programa y la salida del programa se envía al servidor

•El servidor envía el fichero al navegador

•El navegador muestra la página web al usuario

LENGUAJE DE PROGRAMACIÓN PHP

(5)

Ing. Jose L. Enriquez

LENGUAJE DE PROGRAMACIÓN Y GESTOR DE BASE DE DATOS

(6)

•El usuario escribe la dirección de la página web en su navegador

•El navegador la solicita al servidor web correspondiente (este paso requiere la participación de máquinas intermedias que no se comentan aquí)

•El servidor detecta que no es un documento ya existente sino que tiene que generarse, así que recurre al intérprete del lenguaje

•El intérprete del lenguaje ejecuta el programa, que requiere ejecutar consultas al sistema gestor de bases de datos y la salida del programa se envía al servidor

•El servidor envía el fichero al navegador

•El navegador muestra la página web al usuario

(7)

Ing. Jose L. Enriquez

Bases de datos en la Web

 Las bases de datos permiten almacenar de una forma

estructurada y eficiente toda la información de un sitio web

 Ventajas

– Proporcionar información actualizada – Facilitar la realización de búsquedas – Disminuir los costes de mantenimiento

– Implementar sistemas de control de acceso – Almacenar preferencias de los usuarios

(8)

PHP y bases de datos

Cuando una aplicación web necesita conservar información de forma permanente para recuperarla posteriormente, suele ser conveniente recurrir a un sistema gestor de bases de datos(SGBD).

Normalmente los SGBD son aplicaciones externas que se instalan y administran de forma separada.

PHP permite utilizar la mayoría de los SGBD más conocidos, libres o comerciales (MySQL, Oracle, MS SQL Server, PostgreSQL, Firebird, Ingres, etc) como se puede consultar en el apartado sobre acceso a bases de datos del manual de PHP.

Un caso particular es SQLite, que no es una aplicación externa sino una biblioteca en C que implementa un motor de bases de datos SQL. SQLite estaba disponible en PHP desde junio de 2003 como extensión PECL (para PHP 4.3 y posteriores), y se incluye en el código fuente de PHP desde PHP 5.0 (publicado en agosto de 2004). Eso quiere decir que PHP puede gestionar bases de datos directamente, sin necesidad de recurrir a SGBD externos.

Aunque PHP siempre ha permitido utilizar numerosos SGBD, la forma de hacerlo ha ido variando con el tiempo.

(9)

Ing. Jose L. Enriquez

Acceso mediante bibliotecas específicas

En las primeras versiones de de PHP, la única manera de acceder a un SGBD era a través de una biblioteca específica, que contenía las funciones necesarias. A esas bibliotecas se les suelen llamar también extensiones.

En algunos casos esas extensiones se incluían en las distribuciones oficiales de PHP y para poder utilizarlas era suficiente con incluir la directiva correspondiente en el archivo de configuración php.ini.

En otros casos esas extensiones no estaban incluidas en las distribuciones oficiales de PHP, pero estaban incluidas en PEAR o PECL y para poder utilizarlas era necesario instalarlas por separado.

Con el paso del tiempo, este enfoque fue mostrando sus limitaciones. El principal inconveniente de este enfoque es que cada extensión está estrechamente vinculada a cada SGBD y si se quiere cambiar de SGBD es necesario reescribir completamente la aplicación (los nombres de cada función son diferentes, el orden de los argumentos distinto, las funcionalidades disponibles son diferentes, etc.). Además en algunos casos, las extensiones no están mantenidas adecuadamente (bugs de seguridad, etc.).

Actualmente (noviembre de 2014), PHP se sigue distribuyendo con muchas de estas extensiones y todavía se pueden utilizar, pero en su lugar se recomienda utilizar la biblioteca PDO que se comenta a continuación.

(10)

Acceso mediante PDO

Para poder escribir programas independientes del SGBD elegido, es necesario utilizar una capa de abstracción que permita acceder de una forma común a cualquier SGBD. Esta necesidad no es exclusiva de PHP, sino que afecta a cualquier aplicación que necesita trabajar con un SGBD y no tiene solución completa pues las diferencias entre los SGBD no permiten olvidarse de cuál estamos utilizando realmente.

Una de estas capas de abstracción es ODBC (Open DataBase Connectivity), una API independiente del sistema operativo, lenguaje de programación o SGBD utilizada que se empezó a desarrollar en 1992. En PHP existe una extensión llamada también ODBC que permite conexiones ODBC (creo que esta extensión se incorporó en PHP 3.0, publicado en junio de 1998, en cualquier caso estaba activada en PHP 4.0, publicado en mayo de 2000). El inconveniente de ODBC es que introduce un elemento más en la cadena, el controlador ODBC del sistema operativo, lo que puede ralentizar el rendimiento.

La capa de abstracción propia de PHP se llama PDO. PDO, biblioteca orientada a objetos, se podía utilizar como extensión PECL de PHP 5.0, publicado en agosto de 2004 y está incluida en PHP desde PHP 5.1, publicado en noviembre de 2005. PDO incluye controladores para acceder a las bases de datos más populares y la lista se va ampliando con el tiempo (aunque no incluye todos los SGBD que disponen de extensiones específicas). Utilizando PDO no podemos olvidarnos completamente del SGBD utilizado, pero la mayor parte del código es independiente del SGBD y sólo en algunas partes del programa (en la conexión con el SGBD o en la creación de tablas, por ejemplo) el código es específico del SGBD.

Actualmente (noviembre de 2014), la extensión PDO es la biblioteca recomendada para acceder a SGBD..

(11)

Ing. Jose L. Enriquez

En el futuro ...

Existen capas de abstracción de nivel superior a PDO, que permiten en teoría olvidarse completamente del SGBD ya que son capaces de reescribir las sentencias SQL o simular características no presentes en el SGBD.

Algunas de estas capas son las bibliotecas Doctrine DBAL o Propel (el paquete PEAR MDB2 parece actualmente - 2015- abandonado).

Actualmente (2015) ninguna de estas bibliotecas está incluida en PHP.

(12)
(13)

Ing. Jose L. Enriquez

Herramientas de administración:

phpMyAdmin

phpMyAdmin es una herramienta para la administración del servidor de bases de datos MySQL

Dispone de una interfaz gráfica y es de libre distribución

Permite realizar todo tipo de operaciones sobre bases de datos:

crear, borrar y modificar tablas

consultar, insertar, modificar y eliminar datos

definir usuarios y asignar permisos

realizar copias de seguridad

etc

Está escrita en php y se ejecuta desde el navegador

Si está instalada en la carpeta phpmyadmin, se ejecuta escribiendo en la barra de direcciones del navegador la url

http://localhost/phpmyadmin/

Puede administrar bases de datos locales y remotas

(14)

Se requiere previamente activar el servicio de MySQL para usar bases de datos

(15)

Ing. Jose L. Enriquez

(16)

Lenguaje SQL

SQL (Structured Query Language) es el lenguaje que se utiliza para comunicarse con la base de datos

Procedimiento de comunicación con la base de datos:

Página

PHP Base de

datos orden SQL

resultado

(17)

Lenguaje SQL

Las instrucciones más habituales son SELECT, INSERT, UPDATE, DELETE

Veamos su sintaxis básica y algunos ejemplos de uso

Para ello utilizaremos una tabla noticias con cinco campos:

un identificador único de la noticia, el título de la noticia, el texto de la noticia, la categoría de la noticia y la fecha de publicación de la noticia

título texto categoría noticias id

fecha

(18)

Lenguaje SQL

SELECT

Sintaxis:

SELECT expresión FROM tabla [WHERE condición]

[ORDER BY {unsigned_integer | col_name | formula}

[ASC | DESC] ,...]

[LIMIT [offset,] row_count | row_count OFFSET offset]

Ejemplo:

SELECT * from noticias WHERE fecha=CURDATE() LIMIT 10 ORDER BY fecha DESC

Obtiene las noticias del día con un tope máximo de 10, ordenadas de la más reciente a la más antigua

SELECT

[ALL |DISTINCT|DISTINCTROW ] [HIGH_PRIORITY]

[STRAIGHT_JOIN]

[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]

[SQL_CACHE |SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]

select_expr[,select_expr...]

[FROMtable_references [WHERE where_condition]

[GROUP BY{col_name |expr |position}

[ASC|DESC], ... [WITH ROLLUP]]

[HAVINGwhere_condition]

[ORDER BY {col_name |expr |position}

[ASC|DESC], ...]

[LIMIT{[offset,]row_count|row_count OFFSET offset}]

[PROCEDURE procedure_name(argument_list)]

[INTOOUTFILE 'file_name'

[CHARACTER SETcharset_name]

export_options

|INTODUMPFILE 'file_name'

|INTOvar_name[,var_name]]

[FOR UPDATE |LOCK IN SHARE MODE]]

(19)

Lenguaje SQL

INSERT

Sintaxis:

INSERT [INTO] nombre_tabla [(nombre_columna,...)]

VALUES ((expresión | DEFAULT),...), (...),...

INSERT [INTO] nombre_tabla

SET nombre_columna=(expresión | DEFAULT), ...

Ejemplo:

INSERT INTO noticias (id, titulo, texto, categoria, fecha) VALUES (37, “Nueva promoción en Nervión”,

“145 viviendas de lujo en urbanización ajardinada situadas en un entorno privilegiado”,

“promociones”, CURDATE())

Inserta una noticia con los valores indicados

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]

[INTO] tbl_name [(col_name,...)]

{VALUES | VALUE} ({expr | DEFAULT},...),(...),...

[ ON DUPLICATE KEY UPDATE col_name=expr

[, col_name=expr] ... ] Or:

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]

[INTO] tbl_name

SET col_name={expr | DEFAULT}, ...

[ ON DUPLICATE KEY UPDATE col_name=expr

[, col_name=expr] ... ] Or:

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]

[INTO] tbl_name [(col_name,...)]

SELECT ...

[ ON DUPLICATE KEY UPDATE col_name=expr

[, col_name=expr] ... ]

(20)

Lenguaje SQL

UPDATE

Sintaxis:

UPDATE nombre_tabla

SET nombre_columna1=expr1 [, nombre_columna2=expr2 ...]

[WHERE condición]

[ORDER BY ...]

[LIMIT row_count]

Ejemplo:

UPDATE noticias SET categoria = “ofertas”

WHERE id=37

Modifica la categoría de la noticia con id=37 de la tabla

-- Single-table syntax:

UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1|DEFAULT} [,

col_name2={expr2|DEFAULT}] ...

[WHERE where_condition]

[ORDER BY ...]

[LIMIT row_count]

-- Multiple-table syntax:

UPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1={expr1|DEFAULT} [,

col_name2={expr2|DEFAULT}] ...

[WHERE where_condition]

(21)

Lenguaje SQL

DELETE

Sintaxis:

DELETE FROM nombre_tabla [WHERE condición]

[ORDER BY ...]

[LIMIT row_count]

Ejemplo:

DELETE FROM noticias WHERE fecha < CURDATE()-10

Borra las noticias con más de 10 días de antigüedad

-- Single-table syntax:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name

[WHERE where_condition]

[ORDER BY ...]

[LIMIT row_count]

-- Multiple-table syntax:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE]

tbl_name[.*] [, tbl_name[.*]] ...

FROM table_references [WHERE where_condition]

-- Or:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE]

FROM tbl_name[.*] [, tbl_name[.*]] ...

USING table_references [WHERE where_condition]

(22)

Funciones de PHP para el acceso a bases de datos MySQL

Los pasos para acceder desde PHP a una base de datos son los siguientes:

Conectar con el servidor de bases de datos

Seleccionar una base de datos

Enviar la instrucción SQL a la base de datos

Obtener y procesar los resultados

Cerrar la conexión con el servidor de bases de datos

(23)

Ing. Jose L. Enriquez

PHP y MySQL

PHP ha tenido tres extensiones para acceder a la base de datos MySQL:

•Extensión mysql: La primera extensión para MySQL incluida en PHP (creo que esta extensión se incorporó en PHP 3.0, publicado en junio de 1998, en cualquier caso estaba activada en PHP 4.0, publicado en mayo de 2000). En diciembre de 2012 se decidió eliminar la extensión y la extensión está desaconsejada (deprecated) desde PHP 5.5 (publicado en junio de 2013) y su uso genera un aviso E_DEPRECATED.

•Extensión mysqli (improved mysql): Esta extensión se incluyó por primera vez en PHP 5.0 (publicado en julio de 2004). Las principales ventajas de esta extensión son la posibilidad de utilizar una sintaxis orientada a objetos, sentencias preparadas, transacciones y otras.

•Extensión PDO: esta extensión, que permite trabajar con diferentes bases de datos, incluye un controlador para MySQL desde que fue incluida en PHP 5.1 (publicado en noviembre de 2005).

Aunque las extensiones mysqli se incluye actualmente (noviembre de 2014) en PHP, en su lugar se recomienda acceder a MySQL mediante la extensión PDO.

(24)

Acceso a bases de datos MySQL

Las funciones concretas de MySQL que realizan estas operaciones son:

Conectar con el servidor de bases de datos:

mysqli_connect() mysqli::__construct

Enviar la instrucción SQL a la base de datos:

mysqli_query()

Obtener y procesar los resultados:

mysqli_num_rows() y mysqli_fetch_array()

Libera la memoria asociada a un resultado

mysqli_free_result()

Cierra una conexión a base de datos previamente abierta

mysqli_close()

(25)

http://www.php.net/manual/es/book.mysqli.php

Extensión de Base de Datos MySQL mejorada

http://php.net/manual/es/mysqli.summary.php

Referencias

Documento similar

Este trabajo esta orientado a la creación de una herramienta para la generación de la capa de acceso a datos para una aplicación WEB usando como lenguaje de programación

Es seguro: El sistema de autorización de MySQL permite privilegios en una o varias bases de datos (por ejemplo el privilegio de crear bases de datos o de

Como parte de la misma se desarrolló una arquitectura como línea de referencia del desarrollo de software, se trabajó con un framework, que responde a los requerimientos

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

Procedemos ahora a instalar XAMPP, para poder gestionar nuestra base de datos MySQL. Download XAMPP (apachefriends.org) Descargamos la

El objetivo del proyecto es el desarrollo de una aplicación web respaldada por una base de datos con la capacidad de gestionar los diferentes usuarios, clientes y presupuestos que

El fenómeno del cuidado, emerge como necesidad la simbiosis entre el proceso de enfermería y su transcendencia en la investigación científica a través de la enfermería basada

Desde el equipo de la Secretaría de Integración con la Comunidad y Extensión Universitaria nos proponemos analizar de manera crítica la función de la extensión, sus alcances