Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 3
Tema 3
3 TEMA
Acceso a BD desde PHP
Esquema
TEMA 3 – Esquema
PHP
2
de MariaDB
Seleccionar datos
Estilos de programación
Insertar/actualizar datos
Conexión a BD
Borrar registros
Selección de datos
Procesamiento de datos
Acceso a metadatos
Multiconsultas
Ideas clave
Para estudiar este tema lee las Ideas clave que encontrarás a continuación.
Además, tendrás que estudiar las siguientes páginas disponibles bajo licencia CEDRO:
En este tema, vas a aprender a acceder a una base de datos desde el código PHP.
Esta tarea se llevará a cabo gracias al manejo de información desde sitios web PHP. Para
ello, en este tema, se estudiarán los principales conceptos de bases de datos para acceder
a dicho manejo de información.
Es muy habitual que PHP trabaje contra bases de datos MySQL o MariaDB, ya que
son accesibles y muy potentes, tal como verás a continuación. Por este motivo, es
interesante que aprendas algunas características de este tipo de sistemas gestores de
bases de datos, que los diferencian de otros que existen en el mercado. En concreto,
estudiaremos MariaDB compatible con MySQL.
Otro factor muy importante para que puedas recoger datos, es que recordemos los
conceptos fundamentales de SQL, el lenguaje declarativo estándar que nos permite
trabajar con bases de datos. En este tema, hemos incluido las sentencias básicas, y
explicado algunas de las ventajas y desventajas que tiene el uso de SQL. También se
incluye material complementario suficiente para que puedas ampliar tus conocimientos
a medida que tus desarrollos sean más complejos.
Finalmente, estamos preparados para aprender las instrucciones PHP que nos
permiten conectar nuestra web con la base de datos. En el apartado 3.4
aprenderás a trabajar con la extensión nativa MySQLi, que permite el estilo orientado a
objetos y el procedural. Una vez finalizado el tema, serás capaz de incluir contenido
dinámico en tu web de forma sencilla y con un amplio abanico de posibilidades a tu
disposición.
En concreto, MariaDB surge con un fork directo de MySQL, con la compra de Sun
Microsystems (que era propietaria de MySQL) por parte de Oracle. Por tanto, existe una
compatibilidad entre ambos sistemas de administración de bases de datos, que permite
trabajar con MariaDB sobre las características principales de MySQL, ya que dicha
compatibilidad hace que tengan las mismas órdenes, interfaces, APIs, bibliotecas, y que
pueda usarse el software de terceras partes usado por MySQL. Así, la migración de
MySQL a MariaDB es sencilla y directa, sin necesidad de adaptación de código.
MariaDB administra bases de datos de manera rápida, sólida y flexible. Es muy útil para
crear y trabajar con bases de datos accedidas desde páginas web dinámicas. Asimismo,
para la creación de sistemas de transacciones online o para cualquier otra solución
profesional que implique almacenar datos, teniendo la posibilidad de realizar múltiples
y rápidas consultas.
MariaDB, al igual que MySQL, ofrece varias ventajas respecto a otros sistemas gestores
de bases de datos:
SQL es muy simple y sencillo de aprender. Permite al usuario crear, modificar, borrar y
recuperar datos de una base de datos. SQL además, es compatible con programas de
bases de datos como Oracle, Microsoft Access, Microsoft SQL Server, DB2, Sybase, etc.
Exiten una serie de ventajas de SQL, así como algunas desventajas. Ente las ventajas:
» Alta velocidad.
» Estándares bien definidos.
» No se requiere codificación.
» Conexión con los sistemas gestores de bases de datos.
Este apartado pretende ser un repaso de las sentencias que se usan más a menudo
en la programación de sitios web. En el siguiente enlace se pueden encontrar el conjunto
de sentencias de SQL: https://www.w3schools.com/sql/
Es necesario que tengas a mano las sentencias para poder realizar todas estas acciones
desde código, tal como realizarás desde tu código PHP.
Sin embargo, las sentencias que se utilizan más a menudo son las de selección, cuya
sintaxis general es la siguiente:
SELECT lista_de_columnas
FROM lista_de_tablas
[WHERE lista_de_condiciones]
[ORDER BY campos_para_ordenar];
Con esta sintaxis, podrás realizar consultas sobre una o más tablas.
Para eliminar todas las filas de la tabla sin borrar la tabla, se utiliza la siguiente sentencia,
que también resetea los contadores de autoincremento a cierto, y se pueden hacer
posteriores inserciones:
Además, también se puede usar otra sentencia que no solo elimina los datos, sino
también la estructura de la table:
Lo habitual es indicar alguna condición en la parte WHERE, para que se haga un borrado
selectivo. Por ejemplo, dando la clave primaria del registro que se quiere borrar o
una condición que compartan todos los registros a borrar.
Con este repaso rápido de sentencias SQL hemos recordado la sintaxis principal que
necesitas para tus accesos a la base de datos. Como sabes, las BD ofrecen muchas
posibilidades, pero manejarlas de forma adecuada para poder trabajar en tu web no es
tan difícil. Al final del tema se puede encontrar más información sobre diseño de BD y el
lenguaje SQL.
Una vez que has aprendido los conceptos principales de BD, vamos aprender a utilizarlos
desde PHP, ya que este paso constituye la parte principal del dinamismo de los sitios
web.
» API: especifica el formato de las clases, métodos, etc. que se necesitan acceder para
realizar alguna tarea.
» Conector: es el conjunto de instrucciones que permiten conectar un lenguaje de
programación con una BD. En el ámbito de nuestra asignatura, nos referiremos a la
conexión de PHP y MariaDB (compatible con MySQL).
» Controlador: es un driver.
» Extensión: son conjuntos de métodos que amplían la funcionalidad principal de un
repertorio de instrucciones. En nuestro caso, amplían la funcionalidad del núcleo de
PHP.
Es importante señalar que, si bien el uso de MySQLi es muy habitual por ser MariaDB
(junto con MySQL) un Sistema de Gestión de Bases de Datos (SGBD) muy extendido,
existen otras extensiones nativas para otros SGBD. Antes de PHP 5, se trabajaba con una
extensión concreta para cada uno de los SGBD. A partir de PHP 5, se incluye una API
común que permite trabajar de manera común con todos los SGBD soportados. Dicha
API es una capa superior, denominada PDO (PHP Data Object). Esto reduce la
complejidad para el programador, y se mantiene la compatibilidad con extensiones
particulares. Por tanto, PDO proporciona portabilidad y consistencia. No obstante,
aunque esta opción facilita que, llegado el caso, la BD de nuestro sistema se pueda portar,
su funcionamiento es menos eficiente.
En nuestro caso, trabajado con MariaDB (compatible con MySQL), el uso de MySQLi
permite trabajar con dos estilos diferentes: orientado a objetos y procedural o
por procedimientos. Se puede encontrar la información completa de la clase MySQLi
en el siguiente enlace: http://php.net/manual/es/class.mysqli.php
Para trabajar contra una BD, lo primero que necesitamos es establecer una conexión
con ella. Para hacerlo, necesitarás crear un objeto que reciba como argumentos el host
donde se encuentra la BD con la que se desea conectar, el usuario que se conecta, la
contraseña y la base de datos propiamente dicha.
A continuación, se podrán realizar operaciones contra la BD, antes no. Para hacerlo, será
necesario hacer uso de la función query, que recibirá como parámetro la conexión que
hemos realizado en el paso anterior.
Lo siguiente que haremos cuando recuperemos los datos de nuestra BD, será trabajar
con estos datos, recorrerlos, cargarlos en variables para operar con ellos o mostrarlos
por pantalla. Hay métodos para realizar distintas acciones sobre los datos, que aparecen
descritos y utilizados en diferentes ejemplos en el manual. Además, puede resultarnos
de utilidad acceder a alguna información sobre los datos que nos ha devuelto la consulta
realizada: es lo que llamamos meta-datos, que también pueden accederse desde
MySQLi.
A continuación, vemos algunas propiedades de la clase mysqli (para los dos modos de
trabajo, orientado a objetos y procedimental):
Figura 5. Resultados
Figura 6. Resultados
Figura 8. Metadatos
Lo + recomendado
No dejes de leer…
Repasando SQL
Gutiérrez Gallardo, J. D. (2004). Desarrollo Web con PHP 5 y MySQL. (pp. 178-198).
España: Anaya Multimedia – Anaya Interactiva.
Aunque en el apartado 3.3. hemos incluido la sintaxis de las sentencias más importantes
de SQL, en este tema nos hemos centrado en el uso de PHP para acceder a las bases de
datos. Por si necesitas aprender o recordar algunas sentencias más complejas, te
recomendamos que leas (páginas 178 a 198) de la siguiente referencia.
No dejes de ver…
Para poder trabajar desde PHP con bases de datos, necesitas tener conocimientos de
diseño e implementación de las mismas. En este tema, hemos intentado dar una visión
general de estos conceptos antes de aprender el código concreto de PHP que nos permite
manejarlos. Sin embargo, pensamos que ver un ejemplo completo puede ayudarte a
clarificar los conceptos, tanto de uso de la herramienta phpMyAdmin como de manejo
de BD.
Puedes acceder al vídeo a través del aula virtual o desde el siguiente enlace:
https://www.youtube.com/watch?v=TbepHhWesL0
+ Información
A fondo
Este tema ha comenzado hablando de MySQL aunque es posible que necesites recordar
algunos conceptos de bases de datos, en general. Si este es tu caso, te recomendamos que
revises los capítulos 6 y 7 (páginas 169 a 258), al menos, del libro que te proponemos. Es
una referencia clásica en el ámbito de las bases de datos y puede serte de gran utilidad
para resolver dudas que te surjan tanto en esta asignatura como a lo largo de tu carrera
profesional.
Cobo, A., Gómez, P., Pérez, D. (2007). PHP Y MySQL: Tecnologías para el desarrollo de
aplicaciones web. (pp. 413-452). España: Ediciones Díaz de Santos.
Bibliografía
Cobo, A., Gómez, P., Pérez, D., Rocha, R. (2007). PHP y MySQL: tecnologías para el
desarrollo de aplicaciones web. España: Ediciones Díaz de Santos.
Silberschatz, A., Korth, H. F., Sudarshan, S. (2006). Fundamentos de Bases de Datos.
España: McGraw-Hill.
Recursos externos
Accede a la página web a través del aula virtual o desde la siguiente dirección:
http://downloads.mysql.com/docs/world.sql.gz
MySQLWorkBench
Accede a la página web a través del aula virtual o desde la siguiente dirección:
https://www.mysql.com/products/workbench/
Database Workbench
Accede a la página web a través del aula virtual o desde la siguiente dirección:
https://mariadb.com/kb/en/library/database-workbench/
En este tema hemos hablado de las compatibilidades entre MariaDB y MySQL. Aquí se
detallan las compatibilidades e incompatibilidades entre versiones.
Accede a la página web a través del aula virtual o desde la siguiente dirección:
https://mariadb.com/kb/en/mariadb/mariadb-vs-mysql-compatibility/
En este tema hemos hablado acerca de las diferencias entre MariaDB y MySQL. Aquí
puedes encontrar un listado de las mejoras, extensiones y nuevas características.
Accede a la página web a través del aula virtual o desde la siguiente dirección:
https://mariadb.com/kb/es/mariadb-versus-mysql-features/
Test
6. El primer paso que se debe realizar para trabajar desde PHP contra una base de datos
es:
A. Inicializar la extensión nativa MySQLi.
B. Abrir la conexión con la base de datos.
C. Ejecutar una sentencia SQL.