You are on page 1of 28

Unidad Didctica 3

Acceso a bases de datos desde


lenguajes de script de servidor

3.1 BASES DE DATOS MySQLi y PHP

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva 1 BASES DE DATOS - JJ Taboada
Bases de datos en la Web
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

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Instalacin y config. de MySQL
Instalar la
Arrancar Conectar con el
Descargar Instalar Configurar extensin para
Servidor servidor
MySQL de PHP

http://dev.mysql.com/
Si arranque no automtico:
mysql-installer-web-community-5.6.26.0.msi C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld u root
y seguir las indicaciones:
1. Seleccionar Server only
2. Instalar MySQL Server 5.6.26
3. Pasar a la configuracin

Desde la lnea de rdenes con Inicio > Programas


Asistente para la configuracin del servidor > MySQL > MySQL Server 5.6 > MySQL Command
1. Config Type: Sever machine Line Client
2. Contrasea para el administrador (root) Mediante phpMyAdmin
3. Crea el usuario alumno1con role: DB Admin y Usando la biblioteca de funciones de MySQL que
password alumno1 posee PHP
4. Instalacin como servicio Windows
5. Lanzar el servidor manualmente
6. Pulsar Execute para realizar la configuracin
7. Pulsar Finish para finalizar el asistente

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Puesta en servicio desde la consola de
MS-DOS
Activar el servidor MySql instalado
C:\Program Files \MySQL\MySQL Server 5.6\bin\mysqld u root -p
Ejecutar instrucciones como usuario (cmd)
Situarse en el drectorio C:\Program Files\MySQL\MySQL Server 5.6\bin\
Y ejecutar mysql u alumno1 p
Obtener un listado de todas las bases de datos
Obtener un listado de todas las tablas de la BD mysql
Salir del interface de usuario
mysql> exit

Apagar el servidor MySQL


C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqladmin -u root p shutdown

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Herramienta de administracin:
phpMyAdmin

Descargar Descomprimir Configurar Arranque

http://www.phpmyadmin.net
- Localizar el archivo config.sample.inc.php, situado en la carpeta
donde se haya instalado phpMyAdmin,
1. Descomprimir debajo -Aabrirlo y comprobar que dispone la siguiente configuracin
de la carpeta raz de la tpica para un servidor local:
/* Authentication type *
web (htdocs) /$cfg['Servers'][$i]['auth_type'] = 'cookie';
2. Cambiar el nombre de /* Server parameters *
la carpeta creada a /$cfg['Servers'][$i]['host'] = 'localhost';
phpmyadmin $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

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Mysql en WampServer
Al arrancar WampServer se activa el servidor de MySql
Y Podemos acceder a phpMyAdmin

Actividades: Realizar mysql3

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Ficheros MySQL
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

La tabla user contiene informacin sobre los usuarios, desde qu


mquinas pueden acceder a nuestro servidor MySQL, sus claves y
contraseas y los permisos de acceso de cada uno de ellos

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 dicho
directorio
Uno con extensin .frm contienen la estructura de cada tabla,
Tipo
Otro con extensin .MYD contiene los datos ,
MyISAM
Otro con MYI contienen los ndices de esa tabla.

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
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:
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()

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Conexin a MySQL desde PHP (I)
La conexin la haremos a travs de un fichero include mysql.inc.php que
guardaremos en wamp/seguridad.

<?php
$mysql_server="localhost";
$mysql_login=alumno1";
$mysql_pass=alumno1";

$c;
function conecta(&$c){
global $mysql_server, $mysql_login, $mysql_pass;
$c=@mysqli_connect($mysql_server,$mysql_login,$mysql_pass);
if(!mysqli_connect_errno()){ print "<br>Conexin realizada<br>";
}else{ print "<br>No ha podido realizarse la conexin <br>";
print "<i>Error de conexin nmero:</i> ".
mysqli_connect_errno()." <i>equivalente a:</i> ".
mysqli_connect_error();
exit(); } }
?>

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Conexin a MySQL desde PHP (II)
<? php
$za=$_SERVER['DOCUMENT_ROOT'];
# $za recogeria el valor c:/wamp/www/
$roto=explode('/',$za);
# sacaria la cadena en cuatro elementos de un array cuyos separadores
son /
# haremos nulo el ltimo elemento de array (lo que era www)
$roto[sizeof($roto)-1]="";
# recomponemos la cadena y le agregamos "seguridad/
c:/wamp/seguridad/
$zzz=implode("/",$roto)."seguridad/";
include($zzz."mysql.inc.php");
conecta($c);
if(mysqli_close($c)){
print "<br>Se ha cerrado la conexin con el servidor de bases de
datos<BR>";
}
?> Actividad: Realizar conexion1

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Conexin a MySQL desde PHP (III)

<?
$c=@mysqli_connect("localhost",alumno1",alumno1") or die("No se conect");

if(mysqli_close($c)){
print "<br>Se ha cerrado la conexin con el servidor de bases de datos<BR>";
}

?>

Evita que aparezca un mensaje de error de En el caso de que se produzca un error se


php interrumpir la ejecucin del script y aparecer en
la ventana del navegador el texto incluido en
mensaje.

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Listar las bases de datos existentes

<? php
#Establecemos la conexin
..
#Obtenemos las bases de datos
if( $r=mysqli_query($c, show databases)){
#Obtenemos el nmero bases de datos
$numero=mysqli_num_rows($r);
#Listamos los nombres de las bases de datos
while($nom=mysqli_fetch_row($r){
print (<br>.$nom[0].<br>);
} }
#cerramos la conexin
.. Actividad: Realizar conexion2

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Crear y borrar una base de datos

requiere una conexin previa


mysqli_query ($c,"CREATE DATABASE nom")
mysqli_query ($c,"DROP DATABASE nom")

Atencin!

Actividades: Realizar crearBaseDatos1 y


crearBaseDatos2

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Creacin de tablas
Tipos de campos en MySql
Campos numricos
Campos de fecha
Campos de cadena de caracteres Se ve en el mdulo
Bases de Datos

Conexin con el servidor $c=mysqli_connect(h, u, p)


Seleccin de la base de datos mysqli_select_db($c,"n);
Ejemplo
Creacin de creacin
de la tabla demysqli_query($c,$sent);
una tabla

Actividades: Realizar crearTablas1 y


crearTablas2

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Ver y modificar estructuras (I)

$r=mysqli_query($c,"SHOW FIELDS from $tabla)


$t =mysqli_fetch_row ($r)
while($t=mysqli_fech_row($r){
$r=mysqli_query($c,$sent);
$g[]=$t;
while($t=mysqli_fech_row($r){
}
foreach ($t as $valor){
print $valor;
VISUALIZAR LA
}}
ESTRUCTURA DE UNA
TABLA
Borrar una tabla DROP TABLE IF EXISTS from nombre de la tabla
Borrar uno de los campos de una tabla ALTER TABLE nombre de
la tabla DROP nombre del campo
Aadir un nuevo campo a una tablaALTER TABLE nombre de la
tabla ADD nombre del campo tipo [flags]
Ejercicios: Realizar modificarTablas1
IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017
Huelva BASES DE DATOS - JJ Taboada
Ver y modificar estructuras (II)
Funcin Valor devuelto
mysqli_field_count ($c) nmero de campos de la tabla
mysqli_num_rows ($r) nmero de registros Si la tabla no
contiene datos devolver CERO.
Utilizar sentencias SQL nombre de la tabla
tipo de campo
flags del campo
longitud del campo
nombre del campo
mysqli_free_result($r) liberar la parte de la memoria que
contiene un identificador de resultado

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Aadir registros
INSERT INTO tabla (campo1,campo2,..) VALUES (valor1,valor2,..)

mysqli_errno($c) Indica el nmero de error que se ha producido en


la 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. Error nmero 1050:


Intentar crear
una tabla ya existente.
Error nmero 1062:
Indica que hemos
Ver ejemplo de aadir un registro tratado de introducir un
valor con clave
Ver ejemplo de aadir registros de forma aleatoria duplicada en un campo
con ndice nico o
principal

Ejercicios: Realizar AadirRegistros1 y 2

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
La sentencia INSERT con modificadores
INSERT [LOW_PRIORITY | DELAYED] [IGNORE] INTO
tabla (campo1,..) VALUES (valor1,..)

LOW_PRIORITY el proceso de escritura esperar a que terminen los


procesos de lectura activos
DELAYED el proceso de lectura se interrumpir automticamente para
ceder 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

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Aadir ndices
Tipo de ndice
PRIMARY KEY(campo) ndice principal de la tabla
no admite valores duplicados
Solo puede definirse un ndice primario por tabla y el campo
utilizado ha de ser un campo no nulo.
UNIQUE nombre (campo) permite la creacin de ms de un ndice de este tipo por tabla
no 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 y
VARCHAR que permite indexar por los n primeros
caracteres de esas cadenas.

El valor de n ha de ser:

n <= 256

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Aadir registros a travs de
formularios
Lo estudiamos viendo detenidamente los siguientes
ejemplos del cuaderno de ejemplos Base de Datos PHP
Creacin del formulario
Script para recogida de los datos enviados
Los valores de SELECT MULTIPLE En la tabla demo4
<SELECT MULTIPLE name=p_v9[] SIZE=6> $crear.="Idiomas SET(' Castellano','
<option value=1>Castellano</option> Francs','Ingls',' Alemn',' Blgaro','
<option value=2>Francs</option> Chino'), ";
<option value=4>Ingls</option>
<option value=8>Alemn</option> Si seleccionamos Francs y Blgaro el
<option value=16>Blgaro</option> array sera : var[0]=2,var[1]=16
<option value=32>Chino</option>
</select> Si sumamos esos valores (2 + 16) el
resultado sera 18, y al convertir a
binario este valor,
resultar: 010010

Ejercicios: Realizar aadirRegistros3

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Consultas en tablas
Sintaxis MySQL de seleccin de registros

Sentencias bsicas para consultas


SELECT campos FROM taba WHERE condiciones
SELECT campo1,campo2, ... FROM tabla ORDER
BY campo_n [ASC|DESC], campo_m[ASC|DESC]
SELECT MAX(campo1), MIN (campo2), ... FROM tabla

Ejemplo de Consulta seleccionando registros

Actividades: Realiza consulta1 y consulta2

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Consulta conjunta de varias tablas
SELECT tabla1.campo1, tabla2.campo2, ... FROM tabla1, tabla2

Actividades: Consulta3

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Modificar y Borrar registros
UPDATE tabla SET campo1=valor1, campo2=valor2

UPDATE tabla SET campo1=valor1, campo2=valor2 WHERE condicin

DELETE FROM tabla


DELETE FROM tabla WHERE condicin

Actividades: Realiza la Actividad Final propuesta

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Imgenes en Tablas
Las imgenes se pueden guardar en campos del tipo:
BLOB
MEDIUMBLOB Segn el tamao en byte de la imagen
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 header("Content-type: $tipo_imagen);
echo $registro['imagen'];
Ms informacin

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Tablas InnoDB (I)
Permiten realizar transacciones
Definir reglas de integridad referencial
Utilizan un solo archivo por tabla

Creacin: Igual que MYISAM pero con Type=InnoDB

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Tablas InnoDB (II)
Transacciones: los datos se registran de forma provisional
hasta que recibe una orden de definitivo:
BEGIN,comienza la transaccin
ROLLBACK indica final transaccin pero sin hacerse efectivos los
cambios
COMMIT indica final transaccin y debe hacerse efectivos los
cambios
Ms informacin

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Tablas InnoDB (III)
La Integridad referencial ha de establecerse siempre entre
dos 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) y
con campos asociado de tipo idntico a los usados en el ndice de la tabla primaria.
Sintaxis:
CREATE TABLE tablaVinculada (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

Ms informacin

Ver ejemplo

IES San Sebastin Implantacin de Aplicaciones WEB. 16/02/2017


Huelva BASES DE DATOS - JJ Taboada
Unidad 3

3.1 BASES DE DATOS MySQLi y PHP

IES San
Sebastin Implantacin de Aplicaciones WEB. 16/02/2017
Huelva 28 BASES DE DATOS - JJ Taboada

You might also like