8/13/2019 3_1_BasesdeDatosMySQLiPHP
1/28
Unidad Didctica 3
Acceso a bases de datos desde
lenguajes de script de servidor
3.1 BASES DE DATOS MySQLi y PHP
16/02/2017Implantacin de Aplicaciones WEB.
BASES DE DATOS - JJ Taboada
IES San SebastinHuelva 1
8/13/2019 3_1_BasesdeDatosMySQLiPHP
2/28
Bases de datos en la Web
16/02/2017Implantacin de Aplicaciones WEB.
BASES DE DATOS - JJ Taboada
IES San Sebastin
Huelva
Esquema bsico de un sitio web soportado por bases de datos:
Las bases de datos permiten
almacenar de una forma
estructurada y eficiente toda la
informacin de un sitio web
8/13/2019 3_1_BasesdeDatosMySQLiPHP
3/28
Instalacin y config. de MySQL
16/02/2017Implantacin de Aplicaciones WEB.
BASES DE DATOS - JJ Taboada
IES San Sebastin
Huelva
Descargar Instalar Configurar ArrancarServidor
Conectar con elservidor
Instalar laextensin paraMySQL de PHP
http://dev.mysql.com/
mysql-installer-web-community-5.6.26.0.msi
y seguir las indicaciones:
1. Seleccionar Server only2. Instalar MySQL Server 5.6.263. Pasar a la configuracin
Asistente para la configuracin del servidor1. ConfigType: Sever machine2. Contrasea para el administrador (root)
3. Crea el usuario alumno1con role: DB Admin ypassword alumno1
4. Instalacin como servicio Windows5. Lanzar el servidor manualmente6. Pulsar Execute para realizar la configuracin7. Pulsar Finish para finalizar el asistente
Si arranque no automtico:C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldu root
Desde la lnea de rdenes con Inicio > Programas> MySQL > MySQL Server 5.6 > MySQL CommandLine Client Mediante phpMyAdmin
Usando la biblioteca de funciones de MySQL queposee PHP
http://dev.mysql.com/downloads/file.php?id=458482http://dev.mysql.com/downloads/file.php?id=4584828/13/2019 3_1_BasesdeDatosMySQLiPHP
4/28
Puesta en servicio desde la consola deMS-DOS
16/02/2017Implantacin de Aplicaciones WEB.
BASES DE DATOS - JJ Taboada
IES San Sebastin
Huelva
Activar el servidor MySql instaladoC:\Program Files \MySQL\MySQL Server 5.6\bin\mysqldu root -p
Ejecutar instrucciones como usuario (cmd)
Situarse en el drectorio C:\Program Files\MySQL\MySQL Server 5.6\bin\
Y ejecutar mysqlu alumno1p Obtener un listado de todas las bases de datos
Obtener un listado de todas las tablas de la BD mysql
Salir delinterface de usuario
mysql> exit
Apagar el servidor MySQL
C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqladmin -u root p shutdown
8/13/2019 3_1_BasesdeDatosMySQLiPHP
5/28
Herramienta de administracin:phpMyAdmin
16/02/2017Implantacin de Aplicaciones WEB.
BASES DE DATOS - JJ Taboada
IES San Sebastin
Huelva
Descargar Descomprimir Configurar Arranque
http://www.phpmyadmin.net
1. Descomprimir debajo
de la carpeta raz de la
web (htdocs)
2. Cambiar el nombre dela carpeta creada a
phpmyadmin
- Localizar el archivo config.sample.inc.php, situado en la carpeta
donde se haya instalado phpMyAdmin,-Aabrirlo y comprobar que dispone la siguiente configuracintpica para un servidor local:
/* Authentication type */$cfg['Servers'][$i]['auth_type'] = 'cookie';/* Server parameters */$cfg['Servers'][$i]['host'] = 'localhost';$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;$cfg['Servers'][$i]['AllowNoPassword'] = false;
- Salvarlo como config.inc.php 1. Ejecutar Apache y MySqld
2. Abrir el navegador y teclear la
url http://localhost/phpmyadmin
http://www.phpmyadmin.net/http://www.phpmyadmin.net/8/13/2019 3_1_BasesdeDatosMySQLiPHP
6/28
Mysql en WampServer
16/02/2017Implantacin de Aplicaciones WEB.
BASES DE DATOS - JJ Taboada
IES San Sebastin
Huelva
Al arrancar WampServer se activa el servidor de MySqlY Podemos acceder a phpMyAdmin
Actividades: Realizar mysql3
8/13/2019 3_1_BasesdeDatosMySQLiPHP
7/28
Ficheros MySQL
16/02/2017Implantacin de Aplicaciones WEB.
BASES DE DATOS - JJ Taboada
IES San Sebastin
Huelva
Durante el proceso de instalacin se cre: un subdirectorio llamado data con dos bases de datos : mysql y test. veintitrs tablas en la base de datos mysql. Una de ellas es user
Cada base de datos que creemos: dar lugar a crear un directorio con el mismo nombre dentro del directorio
data.
Y las tablas que creemos darn lugar a tres ficheros que se almacenarn en dichodirectorio
La tabla user contiene informacin sobre los usuarios, desde qumquinas pueden acceder a nuestro servidor MySQL, sus claves y
contraseas y los permisos de acceso de cada uno de ellos
Uno con extensin .frm contienen la estructura de cada tabla,
Otro con extensin .MYD contiene los datos ,
Otro con MYI contienen los ndices de esa tabla.
Tipo
MyISAM
8/13/2019 3_1_BasesdeDatosMySQLiPHP
8/28
Funciones de PHP para el acceso abases de datos MySQL
16/02/2017Implantacin de Aplicaciones WEB.
BASES DE DATOS - JJ Taboada
IES San Sebastin
Huelva
Los pasos para acceder desde PHP a una base de datos sonlos siguientes:
Conectar con el servidor de bases de datos:
mysqli_connect($servidor, $usuario, $contrasea, $nombreBaseDatos)
Seleccionar una base de datos:mysqli_select_db($conexin, $nombreBaseDatos)
Enviar la instruccin SQL a la base de datos:
mysqli_query($conexion, $sentencia )
Obtener y procesar los resultados:
mysqli_num_rows() y mysqli_fetch_array()
Cerrar la conexin con el servidor de bases de datos:
mysqli_close()
8/13/2019 3_1_BasesdeDatosMySQLiPHP
9/28
Conexin a MySQL desde PHP (I)
16/02/2017Implantacin de Aplicaciones WEB.
BASES DE DATOS - JJ Taboada
IES San Sebastin
Huelva
La conexin la haremos a travs de un fichero include mysql.inc.php queguardaremos en wamp/seguridad.
8/13/2019 3_1_BasesdeDatosMySQLiPHP
10/28
Conexin a MySQL desde PHP (II)
16/02/2017Implantacin de Aplicaciones WEB.
BASES DE DATOS - JJ Taboada
IES San Sebastin
Huelva
8/13/2019 3_1_BasesdeDatosMySQLiPHP
11/28
Conexin a MySQL desde PHP (III)
16/02/2017Implantacin de Aplicaciones WEB.
BASES DE DATOS - JJ Taboada
IES San Sebastin
Huelva
Evita que aparezca un mensaje de error de
php
En el caso de que se produzca un error se
interrumpir la ejecucin del script y aparecer en
la ventana del navegador el texto incluido enmensaje.
8/13/2019 3_1_BasesdeDatosMySQLiPHP
12/28
Listar las bases de datos existentes
16/02/2017Implantacin de Aplicaciones WEB.
BASES DE DATOS - JJ Taboada
IES San Sebastin
Huelva
8/13/2019 3_1_BasesdeDatosMySQLiPHP
13/28
Crear y borrar una base de datos
16/02/2017Implantacin de Aplicaciones WEB.
BASES DE DATOS - JJ Taboada
IES San Sebastin
Huelva
requiere una conexin previamysqli_query ($c,"CREATE DATABASE nom")
mysqli_query ($c,"DROP DATABASE nom")
Actividades: Realizar crearBaseDatos1 ycrearBaseDatos2
Atencin!
8/13/2019 3_1_BasesdeDatosMySQLiPHP
14/28
Creacin de tablas
16/02/2017Implantacin de Aplicaciones WEB.
BASES DE DATOS - JJ Taboada
IES San Sebastin
Huelva
Tipos de campos en MySql Campos numricos
Campos de fecha
Campos de cadena de caracteres
Ejemplo de creacin de una tabla
Se ve en el mduloBases de Datos
Conexin con el servidor $c=mysqli_connect(h, u, p)Seleccin de la base de datos mysqli_select_db($c,"n);
Creacin de la tabla mysqli_query($c,$sent);
Actividades: Realizar crearTablas1 ycrearTablas2
http://docencia.taboadaleon.es/attachments/article/256/Tipos%20de%20campos%20en%20MySQL.pdfhttp://docencia.taboadaleon.es/attachments/article/256/Tipos%20de%20campos%20en%20MySQL.pdfhttp://docencia.taboadaleon.es/attachments/article/256/Tipos%20de%20campos%20en%20MySQL.pdfhttp://localhost/var/www/apps/conversion/tmp/scratch_3/CuadernoEjemplosBaseDatosPHP.pdfhttp://localhost/var/www/apps/conversion/tmp/scratch_3/CuadernoEjemplosBaseDatosPHP.pdfhttp://localhost/var/www/apps/conversion/tmp/scratch_3/CuadernoEjemplosBaseDatosPHP.pdfhttp://localhost/var/www/apps/conversion/tmp/scratch_3/CuadernoEjemplosBaseDatosPHP.pdfhttp://localhost/var/www/apps/conversion/tmp/scratch_3/CuadernoEjemplosBaseDatosPHP.pdfhttp://localhost/var/www/apps/conversion/tmp/scratch_3/CuadernoEjemplosBaseDatosPHP.pdfhttp://docencia.taboadaleon.es/attachments/article/256/Tipos%20de%20campos%20en%20MySQL.pdf8/13/2019 3_1_BasesdeDatosMySQLiPHP
15/28
Ver y modificar estructuras (I)
16/02/2017Implantacin de Aplicaciones WEB.
BASES DE DATOS - JJ Taboada
IES San Sebastin
Huelva
$r=mysqli_query($c,"SHOW FIELDS from $tabla) $t =mysqli_fetch_row ($r)
Borrar una tabla DROP TABLE IF EXISTS from nombre de la tabla
Borrar uno de los campos de una tabla ALTER TABLE nombre dela tabla DROP nombre del campo
Aadir un nuevo campo a una tablaALTERTABLE nombre de latabla ADD nombre del campo tipo [flags]
$r=mysqli_query($c,$sent);while($t=mysqli_fech_row($r){
foreach ($t as $valor){print $valor;
}}
while($t=mysqli_fech_row($r){$g[]=$t;
}
VISUALIZAR LA
ESTRUCTURA DE UNA
TABLA
Ejercicios: Realizar modificarTablas1
http://docencia.taboadaleon.es/attachments/article/256/CuadernoEjemplosBaseDatosPHPMysqli.pdfhttp://docencia.taboadaleon.es/attachments/article/256/CuadernoEjemplosBaseDatosPHPMysqli.pdfhttp://docencia.taboadaleon.es/attachments/article/256/CuadernoEjemplosBaseDatosPHPMysqli.pdfhttp://docencia.taboadaleon.es/attachments/article/256/CuadernoEjemplosBaseDatosPHPMysqli.pdf8/13/2019 3_1_BasesdeDatosMySQLiPHP
16/28
Ver y modificar estructuras (II)
16/02/2017Implantacin de Aplicaciones WEB.BASES DE DATOS - JJ Taboada
IES San SebastinHuelva
Funcin Valor devuelto
mysqli_field_count ($c) nmero de campos de la tabla
mysqli_num_rows ($r) nmero de registros Si la tabla nocontiene datos devolver CERO.
Utilizar sentencias SQL nombre de la tabla
tipo de campoflags del campo
longitud del campo
nombre del campo
mysqli_free_result($r) liberarla parte de la memoria que
contiene un identificador de resultado
8/13/2019 3_1_BasesdeDatosMySQLiPHP
17/28
Aadir registros
16/02/2017Implantacin de Aplicaciones WEB.BASES DE DATOS - JJ Taboada
IES San SebastinHuelva
INSERT INTO tabla (campo1,campo2,..) VALUES (valor1,valor2,..)
mysqli_errno($c) Indica el nmero de errorque se ha producido enla transaccin MySQL realizada a travs del identificador de enlace $c.Nmero de error CERO si no error
mysqli_error($c) Devuelve la descripcin del error.
Ver ejemplo de aadir un registro
Ver ejemplo de aadir registros de forma aleatoria
Ejercicios: Realizar AadirRegistros1 y 2
Error nmero 1050:Intentar crearuna tabla ya existente.Error nmero 1062:Indica que hemostratado de introducir unvalor con claveduplicada en un campocon ndice nico oprincipal
http://docencia.taboadaleon.es/attachments/article/256/CuadernoEjemplosBaseDatosPHPMysqli.pdfhttp://docencia.taboadaleon.es/attachments/article/256/CuadernoEjemplosBaseDatosPHPMysqli.pdfhttp://docencia.taboadaleon.es/attachments/article/256/CuadernoEjemplosBaseDatosPHPMysqli.pdfhttp://docencia.taboadaleon.es/attachments/article/256/CuadernoEjemplosBaseDatosPHPMysqli.pdf8/13/2019 3_1_BasesdeDatosMySQLiPHP
18/28
La sentencia INSERT con modificadores
16/02/2017Implantacin de Aplicaciones WEB.BASES DE DATOS - JJ Taboada
IES San SebastinHuelva
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]INTOtabla(campo1,..) VALUES (valor1,..)
LOW_PRIORITYel proceso de escritura esperar a que terminen losprocesos de lectura activos
DELAYED el proceso de lectura se interrumpir automticamente paraceder el paso al de escritura.
IGNORE
Si no est activa: en el momento en el que aparezca una clave duplicada se
interrumpir el proceso de insercin
si estuviera activa el proceso de insercin continuar
8/13/2019 3_1_BasesdeDatosMySQLiPHP
19/28
Aadir ndices
16/02/2017Implantacin de Aplicaciones WEB.BASES DE DATOS - JJ Taboada
IES San SebastinHuelva
Tipo de ndice
PRIMARY KEY(campo) ndice principal de la tablano admite valores duplicadosSolo puede definirse un ndice primario por tabla y el campoutilizado ha de ser un campo no nulo.
UNIQUE nombre (campo) permite la creacin de ms de un ndice de este tipo por tablano requiere que los campos sobre los que se define sean no nulos.no admite valores duplicados
INDEX nombre (campo) crea un ndice secundario
INDEX nombre (campo(n)) utilizable slo en el caso de que el campo ndice sea tipo CHAR yVARCHAR que permite indexar por losn primeroscaracteres de esas cadenas.
El valor de n ha de ser:
n
8/13/2019 3_1_BasesdeDatosMySQLiPHP
20/28
Aadir registros a travs deformularios
16/02/2017Implantacin de Aplicaciones WEB.BASES DE DATOS - JJ Taboada
IES San SebastinHuelva
Lo estudiamos viendo detenidamente los siguientesejemplos del cuaderno de ejemplos Base de Datos PHP
Creacin del formulario
Script para recogida de los datos enviados
Los valores de SELECT MULTIPLECastellanoFrancsInglsAlemnBlgaroChino
En la tabla demo4$crear.="Idiomas SET(' Castellano','Francs','Ingls',' Alemn',' Blgaro','Chino'), ";
Si seleccionamos Francsy Blgaro elarray sera : var[0]=2,var[1]=16
Si sumamos esos valores (2 + 16) elresultado sera 18, y al convertir abinario este valor,resultar: 010010
Ejercicios: Realizar aadirRegistros3
http://docencia.taboadaleon.es/attachments/article/256/CuadernoEjemplosBaseDatosPHPMysqli.pdfhttp://docencia.taboadaleon.es/attachments/article/256/CuadernoEjemplosBaseDatosPHPMysqli.pdfhttp://docencia.taboadaleon.es/attachments/article/256/CuadernoEjemplosBaseDatosPHPMysqli.pdfhttp://docencia.taboadaleon.es/attachments/article/256/CuadernoEjemplosBaseDatosPHPMysqli.pdfhttp://docencia.taboadaleon.es/attachments/article/256/CuadernoEjemplosBaseDatosPHPMysqli.pdfhttp://docencia.taboadaleon.es/attachments/article/256/CuadernoEjemplosBaseDatosPHPMysqli.pdf8/13/2019 3_1_BasesdeDatosMySQLiPHP
21/28
Consultas en tablas
16/02/2017Implantacin de Aplicaciones WEB.BASES DE DATOS - JJ Taboada
IES San SebastinHuelva
Sintaxis MySQL de seleccin de registros
Ejemplo de Consulta seleccionando registros
Sentencias bsicas para consultas
SELECT campos FROM taba WHERE condiciones
SELECTcampo1,campo2, ... FROMtabla ORDERBYcampo_n [ASC|DESC], campo_m[ASC|DESC]
SELECT MAX(campo1), MIN (campo2), ... FROMtabla
Actividades: Realiza consulta1 y consulta2
http://docencia.taboadaleon.es/attachments/article/256/ConsultasenMySQL.pdfhttp://docencia.taboadaleon.es/attachments/article/256/ConsultasenMySQL.pdfhttp://docencia.taboadaleon.es/attachments/article/256/CuadernoEjemplosBaseDatosPHP.pdfhttp://docencia.taboadaleon.es/attachments/article/256/CuadernoEjemplosBaseDatosPHP.pdfhttp://docencia.taboadaleon.es/attachments/article/256/CuadernoEjemplosBaseDatosPHP.pdfhttp://docencia.taboadaleon.es/attachments/article/256/ConsultasenMySQL.pdf8/13/2019 3_1_BasesdeDatosMySQLiPHP
22/28
Consulta conjuntade varias tablas
16/02/2017Implantacin de Aplicaciones WEB.BASES DE DATOS - JJ Taboada
IES San SebastinHuelva
SELECTtabla1.campo1, tabla2.campo2, ... FROMtabla1, tabla2
Actividades: Consulta3
8/13/2019 3_1_BasesdeDatosMySQLiPHP
23/28
Modificar y Borrar registros
16/02/2017Implantacin de Aplicaciones WEB.BASES DE DATOS - JJ Taboada
IES San SebastinHuelva
UPDATEtabla SETcampo1=valor1, campo2=valor2
UPDATEtabla SETcampo1=valor1, campo2=valor2WHEREcondicin
DELETE FROMtabla
DELETE FROMtabla WHERE condicin
Actividades: Realiza la Actividad Final propuesta
8/13/2019 3_1_BasesdeDatosMySQLiPHP
24/28
Imgenes en Tablas
16/02/2017Implantacin de Aplicaciones WEB.BASES DE DATOS - JJ Taboada
IES San SebastinHuelva
Las imgenes se pueden guardar en campos del tipo: BLOB
MEDIUMBLOB
LONBLOB
Para guardar la imagen en el campo: una vez subida al servidor el archivo temporal, abrir el archivo
en modo lectura y binario
Leer el archivo
Aadir \ antes de las comillas con addslashes Lectura de la imagen
Segn el tamao en byte de la imagen
header("Content-type: $tipo_imagen);echo $registro['imagen'];
Ms informacin
http://tecnoloxiaxa.blogspot.com.es/2009/04/manual-de-php-78-mysql-imagenes-en.htmlhttp://tecnoloxiaxa.blogspot.com.es/2009/04/manual-de-php-78-mysql-imagenes-en.html8/13/2019 3_1_BasesdeDatosMySQLiPHP
25/28
Tablas InnoDB (I)
16/02/2017Implantacin de Aplicaciones WEB.BASES DE DATOS - JJ Taboada
IES San SebastinHuelva
Permiten realizar transacciones Definir reglas de integridad referencial
Utilizan un solo archivo por tabla
Creacin: Igual que MYISAM pero con Type=InnoDB
8/13/2019 3_1_BasesdeDatosMySQLiPHP
26/28
Tablas InnoDB (II)
16/02/2017Implantacin de Aplicaciones WEB.BASES DE DATOS - JJ Taboada
IES San SebastinHuelva
Transacciones: los datos se registran de forma provisionalhasta que recibe una orden de definitivo: BEGIN,comienza la transaccin
ROLLBACK indica final transaccin pero sin hacerse efectivos loscambios
COMMIT indica final transaccin y debe hacerse efectivos loscambios
Ms informacin
http://yophpro.com/mysql/transacciones-mysql-con-php.htmlhttp://yophpro.com/mysql/transacciones-mysql-con-php.html8/13/2019 3_1_BasesdeDatosMySQLiPHP
27/28
Tablas InnoDB (III)
16/02/2017Implantacin de Aplicaciones WEB.BASES DE DATOS - JJ Taboada
IES San SebastinHuelva
La Integridad referencial ha de establecerse siempre entredos tablas: Una es la tabla principal con un ndice primario (PRIMARY KEY)
La otra es una tabla vinculada con un ndice (no necesariamente nico o primario) ycon campos asociado de tipo idntico a los usados en el ndice de la tabla primaria.
Sintaxis:
Ver ejemplo
Ms informacin
CREATE TABLEtablaVinculada (campo1, campo2,...KEY nombre (campo de vinculacion ),FOREIGN KEY (campo de vinculacion)REFERENCES nombre_de la tabla principal(Indice
primario de la tabla principal)) Type=InnoDB
http://docencia.taboadaleon.es/attachments/article/256/TablasInnoDBMysqli.pdfhttp://docencia.taboadaleon.es/attachments/article/256/TablasInnoDBMysqli.pdfhttp://www.rinconastur.com/php/php107.phphttp://www.rinconastur.com/php/php107.phphttp://docencia.taboadaleon.es/attachments/article/256/TablasInnoDBMysqli.pdf8/13/2019 3_1_BasesdeDatosMySQLiPHP
28/28
3.1 BASES DE DATOS MySQLi y PHP
16/02/2017
IES San
SebastinH l 28
Implantacin de Aplicaciones WEB.
Unidad 3