Está en la página 1de 46

ACCESO A BASES DE DATOS

PHP & MySQL


Introducción a las bases de datos desde PHP
© Luis Pilo Aceituno lpilo@educarex.es
PREPARACIÓN DEL ENTORNO DE TRABAJO
Aunque PHP permite crear la base de datos y todos sus elementos (tablas, vistas,etc)
mediante código haremos uso de la herramientas phpmyadmin.
● Aunque esta herramienta no es realmente parte de mysql viene con todas las
distribuciones del servidor de bases de datos.
● Es conveniente no realizar la creación de la base de datos mediante código dado que se
dificulta sensiblemente su mantenimiento.
Para acceder a phpmyadmin tenemos varias opciones.
● Si empleamos alguna herramienta que integre PHP y MySQL mediante el enlace oportuno
del panel de control.
● Escribiendo en la barra de direcciones de nuestro navegador:
http://localhost/phpmyadmin/
PREPARACIÓN DEL ENTORNO DE TRABAJO
● En el caso de XAMPP disponemos de una panel de control similar a este.
○ Observa el botón Admin para acceder a phpmyadmin
PREPARACIÓN DEL ENTORNO DE TRABAJO
Para la realización de nuestra práctica crearemos una tabla de ejemplo llamada “quiz”.
Constará de una única tabla denominada “preguntas”. La estructura de dicha tabla la
tienes disponible en la siguiente diapositiva.Pero antes quiero llamar tu atención sobre
algunos detalles de la interfaz de phpmyadmin.
● Para crear una nueva base de datos tiene a la derecha el botón Nueva
● También a la derecha, debajo de dicho botón, tienes el árbol con las bases de datos
disponibles en el servidor
PREPARACIÓN DEL ENTORNO DE TRABAJO
Cuando creas la base de datos llegas a la pantalla de administración de dicha base de datos. En ella
encuentras un menú con múltiples funciones:Examinar el contenido de la base de datos, su estructura,
realizar sentencias SQL, etc

● Para nosotros, en este momento, la funcionalidad más importante de esta pantalla es el


botón Crear Tabla . Observa que además del nombre podemos establecer el número de
registros que contendrá la tabla
PREPARACIÓN DEL ENTORNO DE TRABAJO
La estructura de nuestra tabla, llamada preguntas, es la siguiente.
PREPARACIÓN DEL ENTORNO DE TRABAJO
ACTIVIDAD 1. Crea la base de datos quiz con la tabla preguntas. Dicha tabla
debe tener los campos que observas en la diapositiva anterior. Presta
especial atención a.
● El campo clave primaria que es autoincrementado
● Los tipos de datos que en su mayoría son varchar de tamaño 200
● El tipo de codificación, para poder emplear signos ortográficos como el
acento y la Ñ.
FUNCIONES PRINCIPALES DE UNA BASE DE DATOS
Las funciones principales que realizaremos con nuestra base de datos son.
● C: Create (crear o insertar)
● R:Read (leer)
● U:Update (Modificar)
● D:Delete (Borrar)
Pero para poner trabajar con nuestra base de datos el primer paso debe ser
realizar una conexión al servidor de bases de datos.
1.CONEXIÓN AL SERVIDOR DE BASES DE DATOS.
Todas las funciones que realizaremos sobre nuestra base de datos con PHP se
realizarán mediante sentencias SQL o mediante funciones.
● Para conectarnos a la base de datos disponemos de la función
mysqli_connect(lista de parámetros)
● Está función además de conectarnos al servidor nos permite seleccionar la
base de datos con la que trabajaremos.
1.CONEXIÓN AL SERVIDOR DE BASES DE DATOS.
La sintaxis completa de la función anterior es:
mysqli_connect(host, usuario,clave,base_datos,puerto,socket);
● El usuario suele ser, por defecto, root
● La clave o bien es una cadena vacía, como en XAMPP o es root.
● El puerto y el socket no suelen ser necesarios para la conexión.
● El nombre del servidor suele ser localhost.
○ Puedes, en caso de desconocerlo, ver cual es el la pantalla principal de phpmyadmin.
● ADVERTENCIA: Aunque en este caso, dado que se trata de una base de
datos de aprendizaje, usaremos como usuario en administrador (root)
en un entorno real o de explotación nunca se debe usar esa cuenta
1.CONEXIÓN AL SERVIDOR DE BASES DE DATOS.
● Para realizar la conexión desde nuestro programa PHP definiremos variables
que almacenen nuestros parámetros de conexión.
● Cuando invoquemos a la función mysqli_connect() la acompañaremos de la
función die() la cual mostrará un mensaje en caso de no haber sido posible la
conexión y abortará el programa.
● La función mysqli_connect() retorna un objeto de la clase mysqli si la
operación se realizó de forma satisfactoria o FALSE en caso contrario.
○ Por ello declaramos una variable, que proponemos llamar, $conn para almacenar el retorno
de dicha función
1.CONEXIÓN AL SERVIDOR DE BASES DE DATOS.

Código para efectuar la conexión a la base de datos


1.CONEXIÓN AL SERVIDOR DE BASES DE DATOS.
ACTIVIDAD 2. Crea un página HTML con el código PHP necesario para
efectuar una conexión a la base de datos.
● El programa debe mostrar un mensaje de error en caso de no poder
llevarse a cabo la conexión o un mensaje afirmativo en caso de no
producirse ningún error.
2.SENTENCIAS INCLUDE Y REQUIRE
● Las sentencias anteriores permiten tomar un archivo PHP e incluirlo donde la
función es llamada.
● Estas funciones nos permitirán estructurar nuestro código PHP.
○ Nuestros archivos PHP necesitarán conectarse a la base de datos para realizar sus
funciones (consultas, actualizaciones, insertados,etc).
○ Estas funciones nos permitirán no tener que repetir el código de conexión en cada uno de
esos archivos.
○ Además en caso de vernos obligado a modificar algún parámetro solo será necesario
realizarlo una vez.
2.SENTENCIAS INCLUDE Y REQUIRE
Diferencias entre include() y require()
● include() si no encuentra el archivo señalado manda un mensaje de aviso
“warning” y continua. La sentencia require() manda un mensaje de error fatal
y termina el script
● Además de las funciones anteriores disponemos de las sentencias
include_once() y require_once() que se aseguran que el archivo solo se
cargue una vez
2.SENTENCIAS INCLUDE Y REQUIRE
Para crear nuestro archivo de conexión realizaremos las siguientes tareas.
● Crearemos una carpeta llamada librería y en ella guardaremos un archivo
denominado conexion.php
● El contenido de dicho archivo me permitirá realizar la conexión a la base de
datos
● Cuando necesite usarlo en algun script lo añadiré con alguna de las
funciones anteriores. Para ello la primera línea del script será
2.SENTENCIAS INCLUDE Y REQUIRE
El código del archivo conexion.php puede ser similar a este.
2.SENTENCIAS INCLUDE Y REQUIRE
ACTIVIDAD 3. Realiza una nueva conexión a la base de datos empleando
para ello el archivo conexion.php y las funciones include(), require() o
algunas de sus variantes.
3.INSERTAR REGISTROS EN LA BASE DE DATOS
● Las diferentes operaciones sobre la base de datos:consultas, inserciones,
actualizaciones y borrados se llevan a cabo construyendo la sentencia SQL
apropiada y ejecutandola mediante la función. mysqli_query(). Esto la
convierte en, posiblemente, la función más importantes y usadas en tu
trabajo con bases de datos y PHP.
● Su sintaxis es.
mysqli_query(conexion,query)
● En el caso que nos ocupa la inserción se realizará mediante el comando
INSERT de SQL.
3.INSERTAR REGISTROS EN LA BASE DE DATOS
Para la inserción de un registro en la base de datos seguimos los siguientes
pasos
● Declaro para cada campo de la tabla una variable y le asigno el valor que
deseo insertar
3.INSERTAR REGISTROS EN LA BASE DE DATOS
● Construir la sentencia INSERT.
○ Debes tener en cuenta algunas cuestiones
■ Los campos de la tabla, aunque estén definidos como variables, deben ir entre comilla dobles o
simples.
■ Si van entre comillas dobles estas deben ir precedidas de comillas simples y al contrario.

● La clave primaria es numérica por ello debes pasarle un valor numérico (no debe ir
entre comillas).
○ No importa qué valor le pases dado que al estar definido como autoincrementable el servidor de
bases de datos se ocupará de darle el último valor más uno (lo incrementará en una unidad).
○ Te propongo que le asignes siempre el valor 0.
● He usado el operador “.” para escribir la sentencia SQL en dos líneas para que sean
las legible. No estás obligado a hacerlo así
3.INSERTAR REGISTROS EN LA BASE DE DATOS
● El código de la sentencia SQL sería.
○ presta especial atención al uso de las comillas simples y dobles. Un error en su uso
provocará que el script falle
3.INSERTAR REGISTROS EN LA BASE DE DATOS
● Tras la creación de la sentencia INSERT se invoca a la función
mysqli_query() y se informa al usuario del resultado de la operación
efectuada.
3.INSERTAR REGISTROS EN LA BASE DE DATOS
A modo de epilogo en las siguientes diapositivas te muestro el código completo de
esta operación
3.INSERTAR REGISTROS EN LA BASE DE DATOS
● Conexión a la base de datos y datos a insertar.
3.INSERTAR REGISTROS EN LA BASE DE DATOS
● Creación y ejecución de la sentencia INSERT.
3.INSERTAR REGISTROS EN LA BASE DE DATOS
ACTIVIDAD 4. Añade un mínimo de 4 registros más a la base de datos. Para
ello debes hacer uso de PHP.
● Comprueba inspeccionando el contenido de la base de datos, mediante
phpmyadmin, que la inserción se ha llevado a cabo
4.BORRAR REGISTROS DE LA BASE DE DATOS
● Para borrar los registros de la base de datos usaremos la sentencia DELETE.
● Siempre que usemos DELETE debemos emplear la opción WHERE para
indicar que registros deseamos borrar.
○ De lo contrario se borrarán todos los registros de la base de datos
● La sintaxis de esa instrucción es.
DELETE FROM tabla
WHERE columna operador valor
4.BORRAR REGISTROS DE LA BASE DE DATOS
En el código que te muestro como ejemplo procedemos a borrar el registro
número 3.
4.BORRAR REGISTROS DE LA BASE DE DATOS
ACTIVIDAD 4. Efectua el borrado de algunos de los registros de la tabla
usando PHP.
● Comprueba que la operación se ha llevado a cabo de forma satisfactoria
inspeccionando la base de datos mediante phpmyadmin.
5.MODIFICAR UN REGISTRO DE LA TABLA
● Para modificar registros de la tabla usamos la instrucción UPDATE.
○ Está instrucción permite modificar el valor de un registro ya existente.
● La sintaxis de la instrucción UPDATE es:
UPDATE tabla
SET columna 1=valor 1, columna2= valor2,...
WHERE condición
5.MODIFICAR UN REGISTRO DE LA TABLA
● En el ejemplo siguiente modificaremos uno de los registros previamente
insertados.
○ Observa que como en los casos anteriores hacemos uso de la función mysqli_query()
5.MODIFICAR UN REGISTRO DE LA TABLA
ACTIVIDAD 5. Efectua la actualización de alguno de los registros de la
tabla usando PHP.
● Comprueba que la operación se ha llevado a cabo de forma satisfactoria
inspeccionando la base de datos mediante phpmyadmin.
6.SELECCIONAR REGISTROS DE LA TABLA
● La selección de los registros de la tabla, todos o solo aquellos que cumplan
cierta condición, se lleva a cabo mediante la sentencia SELECT .
● La sintaxis de dicha sentencia es.
SELECT lista de campos FROM tabla WHERE condición
● En su forma más sencilla se recuperan todos los campos de la tabla. En este
caso su sintaxis es:
SELECT * FROM tabla
6.SELECCIONAR REGISTROS DE LA TABLA
● Para la selección de los registros y su ulterior presentación en forma de tabla
usaremos varias funciones, una de ellas en estos momentos muy conocida
por nosotros.
○ mysqli_query()
○ mysqli_num_rows()
○ mysqli_fetch_assoc()
● Tan solo comentaremos, someramente, las dos últimas.
6.SELECCIONAR REGISTROS DE LA TABLA
● mysqli_num_rows(): Retorna el número de registros obtenidos tras ejecutar la sentencia SELECT.
○ Recibe como parámetro la salida de la función mysqli_query()
○ $strSQL=”SELECT ….”;
○ $r=mysqli_query($conn,$strSQL);
○ $num_reg=mysqli_num_rows($r);
● mysqli_fetch_assoc(): Retorna tantos arrays asociativos como registros hayamos recuperado. Los
elementos de cada array son los campos de cada registro.
○ En nuestro ejemplo como nuestra tabla tiene 8 campos cada array devuelto por está función tendrá 8 valores.
○ Si la salida de dicha función se ha asignado a la variable $datos mediante la sentencia:
$fila=mysqli_fetch_assoc($r), accedemos a los distintos campos mediante el nombre con que
se definió el campo en la tabla.
■ $fila[“campo_de_la_tabla”]
6.SELECCIONAR REGISTROS DE LA TABLA
● Para procesar los registros recuperados por la sentencia SELECT podemos
usar un bucle while
while( $fila=mysqli_fetch_asso($r)) {
//Se procesan las filas obtenidas
}
6.SELECCIONAR REGISTROS DE LA TABLA
Como ejemplo en las siguientes diapositivas mostraremos cómo seleccionar los
registros de la única tabla de nuestra base de datos y mostraremos el resultado
en forma de tabla
1. Realizo la conexión a la base de datos y
a. Recupero todos los registros que componían la tabla (Sentencia SELECT)
b. Recupero el número de registros que me ha proporcionado la sentencia SELECT (es decir el
número de registros que tenía la tabla)
6.SELECCIONAR REGISTROS DE LA TABLA
6.SELECCIONAR REGISTROS DE LA TABLA
2.- Retorno el número de registros que contenía la tabla y dibujo la primera
fila de la tabla HTML, es decir la cabecera (etiquetas <th>)
6.SELECCIONAR REGISTROS DE LA TABLA
6.SELECCIONAR REGISTROS DE LA TABLA
3. Recupero las filas o registros de la tabla almacenándolas en un array de arrays
asociativos.
● Por cada una de las filas devueltas por la sentencia SELECT creo un registro
de la tabla HTML
● Uso en bucle WHILE para saber cuando llego al final de grupo de registros
proporcionados por la sentencia SELECT.
● Accedo a los campos de cada registros usando como índice del array el
nombre que tiene el campo en la base de datos.
6.SELECCIONAR REGISTROS DE LA TABLA
6.SELECCIONAR REGISTROS DE LA TABLA
ACTIVIDAD 6. Recupera todos los datos de la tabla y muestralos en una
tabla HTML
7.RECUPERAR EL ÚLTIMO ID INSERTADO
La función mysqli_insert_id() nos devuelve el último valor generado con el
atributo AUTO_INCREMENT
● Si no hay un campo AUTO_INCREMENT regresará el valor de cero
● La columna no tiene que llamarse necesariamente “id”
● También nos retorna el último “id” que se ha modificado con la sentencia
UPDATE.
8.VERIFICAR QUE LOS DATOS NO SE DUPLIQUEN
● Debemos tener una clave única “natura” a parte de la clave primaria de la
tabla (AUTO_INCREMENT)
○ Cuando decimos “natural” queremos decir que tenga sentido en el problema que estamos
modelando, por ejemplo el DNI de una persona o el NIF de una empresa.

También podría gustarte